自动化工具 ATP - UI 自动化测试用例管理平台

· June 15, 2018 · Last by amy replied at June 24, 2020 · 13486 hits

将UI自动化测试平台化是我很久以前就有的想法,但是个人比较懒,从来没有好好的静下来想要怎么样去做而且想到前端后端什么的都需要自己写,然后就一直不了了之,偶然在某个交流群中看见某位同行截图自己的平台作品提问,就私底下聊了一下,也提供了一下自己的意见和建议,恰好当时项目有个大版本,前期时间比较空闲,就自己瞎折腾了这个东东。
用到的工具:python3 + django2 + mysql + RabbitMQ + celery + selenium

平台功能介绍:

  1. 项目管理:用于管理项目。每个项目可以设置多个环境,例如开发环境,测试环境,预发布环境,生产环境等。

  2. 页面管理:主要用来方便对元素进行管理

  3. 元素管理:在这里实现元素分层,使用一个模块对元素的统一管理

  4. 关键字库:关键字驱动,支持将步骤设置成独立的关键字,遇到无法通过工具设置的步骤可以在后台写成方法再添加成关键字。


  5. 测试用例:一条用例可以添加多条测试数据,同时支持前置登陆操作,能根据所选择的项目环境找到配置执行登陆操作



  6. 登陆配置:将登陆封装成,供测试用例编写时使用。

  7. 测试任务:相当于测试用例集,多线程异步执行,支持定时执行,支持浏览器兼容性测试,执行会遍历浏览器/环境/测试用例/测试数据

  8. 测试结果:测试结果查阅

  9. 源码:https://pan.baidu.com/s/11wannCOAaSKa1loOIe_f7w

交流Q群:726249053

共收到 30 条回复 时间 点赞

开源么楼主

#2 · June 19, 2018 作者
End 回复

思路可以交流,代码写的渣。不好意思搬上来。

#3 · June 27, 2018 作者
End 回复

已开源、

没有sql文件么

我觉得你超级牛🐮了

#6 · July 03, 2018 作者
Look毛青 回复

能生成数据表。有疑问百度下django

#7 · July 03, 2018 作者

谢谢夸奖,但个人对这个项目还不满意。

Author only
回复

我也想做一个这样的平台展示数据,可能就是前端不太熟吧😄,有点心有余而力不足的感觉,楼主你说学点基础就能搞成这样,很不错了~

这个平台应该对于移动端UI自动化的管理也适用吧

#11 · July 06, 2018 作者
枫叶 回复

思路可以通,但是无法异步多线程跑。

#12 · July 06, 2018 作者

看看JS和AJAX,然后找的模版自己修改一下。很快上手的。

非常感谢楼主的开源,正好目前准备进入web自动化的工作,可能会拿你的项目来参考使用了。

请问有没有相关的部署说明文档?

请问作者开源的地址是? 借鉴一下

请问作者开源的地址是? 借鉴一下

徐汪成 回复

请问开源的代码在哪呢

gaomeijun 回复

你问我 我问谁》?

楼主,求开源的地址=。=

回复

谢谢大佬!最近在做这个的学习,十分感谢!

给大佬点个赞!拿来学习下

感谢大佬,能提供下关键字的sql吗?

#24 · August 27, 2019 作者
lys411 回复

INSERT INTO miduotester.keyword (id, projectId, name, type, package, clazz, method, params, steps, createTime, remark) VALUES (1, 0, '点击', 1, 'MiDuoTester.PageObject.Base', 'PageObject', 'click', '[{"type":"element","key":"element"}]', null, '2018-05-08 07:09:56.830000', '点击');
INSERT INTO miduotester.keyword (id, projectId, name, type, package, clazz, method, params, steps, createTime, remark) VALUES (2, 0, '输入', 1, 'MiDuoTester.PageObject.Base', 'PageObject', 'send_keys', '[{"type":"element","key":"element"},{"type":"string","key":"value"}]', null, '2018-05-08 07:09:59.455000', '输入');
INSERT INTO miduotester.keyword (id, projectId, name, type, package, clazz, method, params, steps, createTime, remark) VALUES (3, 0, '打开网址', 1, 'MiDuoTester.PageObject.Base', 'PageObject', 'open_url', '[{"type":"string","key":"url"}]', null, '2018-05-08 07:10:00.616000', '打开网址');
INSERT INTO miduotester.keyword (id, projectId, name, type, package, clazz, method, params, steps, createTime, remark) VALUES (4, 0, '清空输入', 1, 'MiDuoTester.PageObject.Base', 'PageObject', 'clear', '[{"type":"element","key":"element"}]', null, '2018-05-08 07:10:01.424000', '清空输入');
INSERT INTO miduotester.keyword (id, projectId, name, type, package, clazz, method, params, steps, createTime, remark) VALUES (5, 0, '最大化浏览器', 1, 'MiDuoTester.PageObject.Base', 'PageObject', 'max_size', null, null, '2018-05-08 07:10:02.146000', '最大化浏览器');
INSERT INTO miduotester.keyword (id, projectId, name, type, package, clazz, method, params, steps, createTime, remark) VALUES (6, 0, '确认弹窗', 1, 'MiDuoTester.PageObject.Base', 'PageObject', 'alert_accept', null, null, '2018-05-08 07:10:02.776000', '确认弹窗');
INSERT INTO miduotester.keyword (id, projectId, name, type, package, clazz, method, params, steps, createTime, remark) VALUES (7, 0, '取消弹窗', 1, 'MiDuoTester.PageObject.Base', 'PageObject', 'alert_dismiss', null, null, '2018-05-08 07:10:03.365000', '取消弹窗');
INSERT INTO miduotester.keyword (id, projectId, name, type, package, clazz, method, params, steps, createTime, remark) VALUES (8, 0, '切换tab窗口', 1, 'MiDuoTester.PageObject.Base', 'PageObject', 'switch_to_window', '[{"type":"string","key":"title"}]', null, '2018-05-08 07:10:04.036000', '切换tab窗口');
INSERT INTO miduotester.keyword (id, projectId, name, type, package, clazz, method, params, steps, createTime, remark) VALUES (9, 0, '切换嵌套', 1, 'MiDuoTester.PageObject.Base', 'PageObject', 'switch_to_frame', '[{"type":"element","key":"frame"}]', null, '2018-05-08 07:10:04.746000', '切换嵌套');
INSERT INTO miduotester.keyword (id, projectId, name, type, package, clazz, method, params, steps, createTime, remark) VALUES (10, 0, '浏览器前进', 1, 'MiDuoTester.PageObject.Base', 'PageObject', 'forward', null, null, '2018-05-08 07:10:05.370000', '浏览器前进');
INSERT INTO miduotester.keyword (id, projectId, name, type, package, clazz, method, params, steps, createTime, remark) VALUES (11, 0, '浏览器返回', 1, 'MiDuoTester.PageObject.Base', 'PageObject', 'back', null, null, '2018-05-08 07:10:06.012000', '浏览器返回');
INSERT INTO miduotester.keyword (id, projectId, name, type, package, clazz, method, params, steps, createTime, remark) VALUES (12, 0, '浏览器刷新', 1, 'MiDuoTester.PageObject.Base', 'PageObject', 'refresh', null, null, '2018-05-08 07:10:06.630000', '浏览器刷新');
INSERT INTO miduotester.keyword (id, projectId, name, type, package, clazz, method, params, steps, createTime, remark) VALUES (13, 0, '关闭页面', 1, 'MiDuoTester.PageObject.Base', 'PageObject', 'close', null, null, '2018-05-08 07:10:07.282000', '关闭页面');
INSERT INTO miduotester.keyword (id, projectId, name, type, package, clazz, method, params, steps, createTime, remark) VALUES (14, 0, '退出浏览器', 1, 'MiDuoTester.PageObject.Base', 'PageObject', 'quit', null, null, '2018-05-08 07:10:08.361000', '退出浏览器');
INSERT INTO miduotester.keyword (id, projectId, name, type, package, clazz, method, params, steps, createTime, remark) VALUES (15, 0, '选择下拉框', 1, 'MiDuoTester.PageObject.Base', 'PageObject', 'select_by_text', '[{"type": "element", "key": "下拉框"}, {"type": "string", "key": "文本"}]', '[]', '2018-05-08 07:10:09.214000', '选择下拉框');

HI,可以简单介绍一下怎么部署吗

#26 · September 20, 2019 作者

准备重构了,有新的动向会再发帖。也可以加下Q群(726249053)一起交流。

少年 POM - Web UI 自动化测试平台 中提及了此贴 15 Oct 17:47

请问为啥部署后运行报这个错误啊
Traceback (most recent call last):
File "D:/a-autotest/MiDuoTester/MiDuoTester/manage.py", line 16, in
execute_from_command_line(sys.argv)
File "D:\python3\lib\site-packages\django\core\management_init.py", line 381, in execute_from_command_line
utility.execute()
File "D:\python3\lib\site-packages\django\core\management__init
.py", line 375, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "D:\python3\lib\site-packages\django\core\management\base.py", line 336, in run_from_argv
connections.close_all()
File "D:\python3\lib\site-packages\django\db\utils.py", line 219, in close_all
for alias in self:
File "D:\python3\lib\site-packages\django\db\utils.py", line 213, in __iter
_
return iter(self.databases)
File "D:\python3\lib\site-packages\django\utils\functional.py", line 80, in get
res = instance.dict[self.name] = self.func(instance)
File "D:\python3\lib\site-packages\django\db\utils.py", line 147, in databases
self.databases = settings.DATABASES
File "D:\python3\lib\site-packages\django\conf__init
.py", line 79, in __getattr_
self.setup(name)
File "D:\python3\lib\site-packages\django\conf__init
.py", line 66, in _setup
self._wrapped = Settings(settings_module)
File "D:\python3\lib\site-packages\django\conf__init
.py", line 157, in __init_
mod = importlib.import_module(self.SETTINGS_MODULE)
File "D:\python3\lib\importlib_init_.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "", line 1006, in _gcd_import
File "", line 983, in _find_and_load
File "", line 953, in _find_and_load_unlocked
File "", line 219, in _call_with_frames_removed
File "", line 1006, in _gcd_import
File "", line 983, in _find_and_load
File "", line 965, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'MiDuoTester.MiDuoTester'

29Floor has been deleted

githu提交上去star一波。。。。谢谢

乐乐 回复

你需要重新构建一下数据库

楼主,浏览器驱动怎么添加的?直接写入数据库吗?brower的sql能否提供下

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up