最近因项目需要重新拾起了 UI 自动化,正好试用了下 Airtest,感觉开发脚本的效率确实高了许多,调试起来也很方便,但是不支持脚本批量执行这就非常不得劲了,所以那句老话就来了:“自己动手,丰衣足食”。
Airtest 执行脚本的核心代码位于airtest\cli\runner.py
中,大体流程如下:
根据上面的流程分析一下,run_script
方法肯定要修改以便加入多个用例;在每次用例执行前我们都需要修改工作目录,因此setUp
也需要修改。既然修改点明确了,那么我们来梳理一下思路:
run_script
方法中先遍历目录获取出所有用例,然后统一添加都 suite 中setUp
方法中调用auto_setup
方法设置日志路径,实现结果分开存放setUp
方法中需要知道每个脚本的日志路径,所以要为 AirtestCase 添加一个属性保存日志路径并在run_script
方法中为其设置对应的值至此执行部分分析完成
Airtest 生成报告的核心代码位于airtest\report\report.py
中,大体流程如下:
因为我们的日志是分开存放的,要给每个日志都生成一个 html 报告只需在main
方法里加个循环,遍历所有日志即可;生成聚合报告这里有点麻烦,因为需要获取 LogToHtml 内部的test_result
属性,但是 Python 的动态特性允许我们使用 types 动态的为实例绑定方法,所以我们可以定义一个方法返回test_result
属性,然后绑定给实例就可以了;最后自定义一个模板,把收集到的结果通过 jinja2 渲染进去,大功告成!
项目目录结构
生成的报告目录结构
聚合报告
核心的逻辑在 runner.py 中,可根据自己的实际情况进行修改,目前 runner.py 中的逻辑如下:
.py
结尾的文件,会忽略以 “__” 开头的缓存文件)添加到测试集runCase
方法,所以需要将测试代码封装成runCase
方法,签名如下runCase(self, vars)
,代码位置
欢迎大家多提宝贵意见,谢谢
就酱,上个链接,溜了溜了。。。(o゚v゚) ノ