同步操作将从 Dzreal/ATX-Test 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
基于ATX-Server的UI自动化测试框架,可以实现多设备的并行测试,并生成统一的测试报告
android:修改Public下的config下的Server地址为atx-server2的Url,token填写正确后,就可以正常运行了
ios:在设备接入到atx-server2之后, 可以参照demo下的wda_demo.py可以运行简单的网易云音乐的脚本操作.
atxserver2的部署请参照大佬的帖子: atxserver2 手机设备管理平台 重装上阵
python2不支持 需要在python3上运行 本人python版本 3.6
Android设备需要通过uiautomator2 init 初始化完成,确认可以正常连接 ,或者init 接入atx-server uiautomator版本需 Version: 0.1.3.dev5 及以后
需要依赖的python第三方库 tinydb、uiautomator2、selenium、jinja2、psutil
相关的基础链接如下
小白入门篇:python uiautomator2 的代码示例
ATX-uiautomator2 实现 webview 的操作
1.下面展示的内容多源于TesterHome各位前辈的经验总结,我只是按照我的想法进行了简单拼接(基于ATX-uiautomator2的android自动化测试)
2.主要参考了hualin (王华林) 老师的https://testerhome.com/topics/7550 ,并在此基础上结合uiautomator2实现
3.所用语言为Python,测试报告模板借用了https://github.com/Gelomen/HTMLTestReportCN-ScreenShot ,并进行了简单的修改以方便截图
4.使用了macaca的bootstrap app作为demo演示
工程目录如下
主体结构和hualin (王华林) 老师的https://testerhome.com/topics/7550 的一致,主要修改了Pubilc下一些东西,并增加了一些东西
Public:
下面介绍一下流程:
1、通过run_cases .py或者run_all_cases.py开始执行测试
if __name__ == '__main__':
# back up old report dir 备份旧的测试报告文件夹到TestReport_backup下
backup_report()
cs = CaseStrategy()
cases = cs.collect_cases(suite=False)
Drivers().run(cases)
# Generate zip_report file 压缩测试报告文件
# zip_report()
1.首先会将Testreport目录剪切到TestReport_backup目录下,备份旧的测试报告
2.通过CaseStrategy获取到需要执的测试用例
3.Drivers().run(cases)
开始执行测试
4.执行完成之后打包压缩,没啥用 注释掉了
2、run(cases)
执行测试
def run(self, cases):
# 根据method 获取android设备
method = ReadConfig().get_method().strip()
if method == 'SERVER':
# get ATX-Server Online devices
# devices = ATX_Server(ReadConfig().get_server_url()).online_devices()
print('Checking available online devices from ATX-Server...')
devices = get_online_devices()
print('\nThere has %s online devices in ATX-Server' % len(devices))
elif method == 'IP':
# get devices from config devices list
print('Checking available IP devices from config... ')
devices = get_devices()
print('\nThere has %s devices alive in config IP list' % len(devices))
elif method == 'USB':
# get devices connected PC with USB
print('Checking available USB devices connected on PC... ')
devices = connect_devices()
print('\nThere has %s USB devices alive ' % len(devices))
else:
raise Exception('Config.ini method illegal:method =%s' % method)
if not devices:
print('There is no device found,test over.')
return
# generate test data data.json 准备测试数据
generate_test_data(devices)
print('Starting Run test >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>')
runs = []
for i in range(len(devices)):
runs.append(RunCases(devices[i]))
# run on every device 开始执行测试
pool = Pool(processes=len(runs))
for run in runs:
pool.apply_async(self._run_cases,
args=(run, cases,))
print('Waiting for all runs done........ ')
pool.close()
pool.join()
print('All runs done........ ')
ChromeDriver.kill()
# Generate statistics report 生成统计测试报告 将所有设备的报告在一个HTML中展示
create_statistics_report(runs)
1.首先根据config.ini中method
的值来判断从atx-serve获取online的设备 还是从config.ini中的ip来获取在线的设备
2.在获取到设备之后,根据设备生产data.json测试数据
3.并行多设备执行测试
4.测试完之后,杀掉执行过程中打开的所有的chromedriver进程
5.最后在TestReport下生成统计测试报告(自动化测试报告.html)
生成的测试报告路径结构如下
每个设备的测试结果及报告或存放在单独的文件夹下
在Testreport目录下会有一个统计测试报告(自动化测试报告.html)会将所有设备的报告统一在一个页面展示
报告展示:
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。