前言
- 自动化框架:Appium + Pytest + Allure
- 测试用例调度:Jenkins
背景
当小程序自动化用例数量达到一定级别的时候,执行效率是个问题,为了解决效率问题,需要一套可以在多台设备并行执行的方案。
Appium本身是支持多设备并行执行的(原生应用CASE没有问题),但是在遇到小程序自动化的时候,Chromedriver拖了后腿。
小程序自动化用例有一个特点,就是需要频繁切换上下文,因为在小程序页面中,会有微信原生组件使用,比如定位权限、日期组件等,要想操作这种页面元素,需要切回原生的上下文,操作完成还要再切回webview。这种频繁切换上下文的操作,在多台设备并行运行的时候,Chromedriver就会频繁报500错误,即使定义了不同的ChromedriverPort。具体现象可以参考 https://testerhome.com/topics/21644。
要解决并行运行的问题,就需要并行运行的时候,把Chromedriver做隔离。最初的方案想到了appium docker,在尝试的过程中,每个docker machine需要通过USB端口号绑定一台设备,但是设备每插拔一次,端口号就变掉了😭 ,反正我是放弃了。有可行方案的同学可以分享下。
终极解决方案——基于Jenkins的节点+矩阵JOB,实现小程序自动化用例并行执行。
操作
涉及Jenkins配置的一些细节,大家可以参考下思韩大神的极客教程&#