CSDN绝无仅有只此一篇:Appium+pytest+allure+jenkins如何实现多台手机连接详细教程教学
使用appium可以实现app自动化测试,我们之前是连接一台手机去运行,
如何同时连接多台手机呢?
很多人可能想到的是多线程(threading)。
今天分享一种比多线程更简单的方法,虽然不是多台手机同时运行,但可以连接多台手机依次运行。
大致的运行方式是:001号测试用例:A手机,B手机...,002号测试用例:A手机,B手机...
环境准备
◆ appium的安装:adt,nodejs,appium的python库,appium server
◆ pytest的安装:pytest
◆ allure的安装:allure的python库pytest-allure-adaptor
◆ jenkins上插件的安装
◆ jenkins的安装:windows上的安装
◆ 手机/模拟器:华为荣耀畅玩5C,夜神模拟器
一:
框架改造
配置改写,以上课所写的前程贷的自动化框架为主。
框架的分层如下:
在上述框架中,我们的配置信息存在Caps目录下的Caps.yaml中。
譬如这样:
这只是一台手机的设备信息和连接信息,
如果我们需要两台甚至多台,就需要把它们的信息都写入yaml文件,
每个手机的信息用一个列表描述。
注意:
01:上述yaml文件中多了deviceDesc和udid,前者是我们用来区分不同的手机,后者是appium用来区分不同的手机
02: 给不同的手机设置不同的端口,荣耀畅玩5C使用的是4723,夜神模拟器使用的是4726
二:
Base Driver的改写
BaseDriver是公共的driver类,通过读取yaml配置信息,生成并返回driver对象。
其基本的传递路径是:
Caps.yaml-->BaseDriver.py-->conftest:设置不同的fixture,返回driver,
因此它是沟通配置信息和conftest的桥梁,
既然配置信息变了,相应的BaseDriver的读取也要改变,
改写前的BaseDriver.py,具体代码如下:
由于是多台手机,每个手机的通过配置信息里的deviceDesc来区分,
BaseDriver类中的base_driver函数需要设置一个变量device来区别不同的手机,
这个device是我们传入的,如果我们传入的是device="YeShen",还是用之前的代码的话,得到将是全部的信息。
有必要通过if判断筛选下,只取对应device的配置信息。
三:
conftest的改写
conftest是比较关键的一部,
因为它会调用BaseDriver()类中的base_driver()方法,
以往我们的conftest是这样定义的:
但是现在不同了,这个basedriver()函数中必须传入一个device的实参,
这个实参是从哪里获得的?
pytest的fixture为我们提供了一种参数化的操作,
fixture可以带入参数params,依赖于这个fixture的一套测试会根据参数的不同运行多次,
而被装饰函数中通过特殊的request对象来访问每个参数:request.param访问的是列表中的每个元素
四:
alllure的使用
allure可以设置不同的特性:
◆ allure.feature(功能点)
◆ allure.story(子功能点)
◆ with allure.step(步骤)
◆ allure.attach(附件)等
结合pytest,一个收集测试用例,一个生成测试报告。
现在通过allure在测试用例中给测试报告增加一些特性。
启动多个appium-server
之前有想过python代码执行appium命令的形式去自动启动appium服务,
但通过npm或cnpm安装appium命令行都有报错,只能手动启动。
很简单,打开两个appium客户端,一个设置端口为4723,一个4726,启动即可。
五:
配置jenkins任务
这方面的内容不做过多介绍,只看下构建和构建后的操作,
其中allure-results是pytest运行测试用例生成的xml报告所在的目录,
jenkins上的Allure Commandline插件会自动解析xml,生成对应的html报告
六:
allure测试报告
十分美观吧,右上角的TREND显示的是多次运行结果的趋势,
第7次到第19次都是5个fail,第20次6个fail
除此之外,allure报告的Behaviors功能中可以看到每个测试用例对应的测试步骤、功能、子功能等,
测试报告还会标记出同一个测试用例是哪台手机执行的,
如下图:
TestLogin.test_login_errorPasswd[Honor_5C]
代表的执行机是荣耀畅玩5C。
jenkins面板也展示了多次运行结果的趋势。
七:结语
pytest中fixture的参数化虽然能够实现多台手机同时连接,但是运行并不是同时的。
因为request.param读取参数列表是遍历读取的,
所以造成了一个测试用例,手机A先执行,手机B后执行(假设params=["手机A", "手机B"]),
要想真正做到多台手机同时运行,就要用到多线程。
感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接免费拿走:
① 2000多本软件测试电子书(主流和经典的书籍应该都有了)
② 软件测试/自动化测试标准库资料(最全中文版)
③ 项目源码(四五十个有趣且经典的练手项目及源码)
④ Python编程语言、API接口自动化测试、web自动化测试、App自动化测试(适合小白学习)
⑤ Python学习路线图(告别不入流的学习)
上图的资料 在我的QQ技术交流群里(技术交流和资源共享,广告进来腿给你打断)
可以自助拿走,群号768747503备注(csdn999)群里的免费资料都是笔者十多年测试生涯的精华。还有同行大神一起交流技术哦
一定一定一定要备注暗号:CSDN999
————————————————
CSDN绝无仅有只此一篇:Appium+pytest+allure+jenkins如何实现多台手机连接详细教程教学相关推荐
- pytest allure测试报告_Appium+pytest+allure+jenkins如何实现多台手机连接
很多人可能想到的是多线程(threading). 今天分享一种比多线程更简单的方法,虽然不是多台手机同时运行,但可以连接多台手机依次运行. 大致的运行方式是:001号测试用例:A手机,B手机...,0 ...
- Appium+Pytest+Allure集成PO项目管理模式实现自动化测试
Appium+Pytest+Allure集成PO项目管理模式实现自动化测试 环境配置 Appium环境配置 Pytest环境配置 Allure环境配置 使用与集成 Appium使用 Pytest使用 ...
- pytest+Allure+jenkins
目录 1.Allure简介 2.Pytest框架集成Allure 2.1 环境配置 2.2 生成html报告 2.3 定制报告 2.3.1 Features.Story定制详解 2.3.2 用例标题和 ...
- 最新出炉 全网最牛最新的pytest+requests+Python3.7+yaml+Allure+Jenkins+docker实现接口自动化测试【超详细】从0到封装
接口自动化测试框架(用例自动生成) 项目说明 本框架是一套基于pytest+requests+Python3.7+yaml+Allure+Jenkins+docker而设计的数据驱动接口自动化测试框架 ...
- 22.【终结篇】poco/airtest+pytest+allure+jenkins框架篇
如果这些内容对你有帮助,也可以打开微信扫一扫,加关注: 前几篇文章已分享了所有代码层相关内容,并提供了源码文件,接下来看下怎么和jenkins配合使用. 为了更方便获取框架源码,下面再汇总下前面几 ...
- Pytest+Allure+Jenkins接口自动化项目实战(一)
经过一周多时间,基于python+pytest+excel+allure框架的接口自动化测试初版已基本实现,包括基本配置读取.用例读取.用例执行.sql读取执行.前置数据准备.后置数据清理以及测试报告 ...
- 【B站视频教程笔记】基于VSCode和CMake实现C/C++开发 | Linux篇(gcc/g++)(安装、配置、使用详细教程)(VSCode教程)(CMake教程)(精!)
基于VSCode和CMake实现C/C++开发 | Linux篇 文章目录 目录结构 文件编辑 vim(编辑器之神,linux里可以畅通无阻,必学,但不是现在!) 安装GCC和GDB g++编译过程 ...
- python自动化框架pytest接口关联串联_python(pytest)+allure+jenkins 实现接口自动化的思路...
ABZ理论 前言 身为著名的创业者+投资人,LinkedIn和Paypal的联合创始人Reid Hoffman有一个令我印象深刻的ABZ理论,他认为,你在任何时刻,手中都需要有三个计划:A计划.B计划 ...
- Android应用开发-小巫CSDN博客客户端UI篇
Android应用开发-小巫CSDN博客客户端UI篇 上一篇是给童鞋们介绍整个项目的概况,从这篇博文开始,后续也会详细介绍整个客户端的开发,但不会贴很多代码,我会贴核心代码然后提供实现思路,想看里面更 ...
最新文章
- java common http_httpClient和common-httpclient的区别
- TS流的解码过程-ES-PES-DTS-PTS-PCR
- Access2007中如何运行SQL执行SQl语句
- web.config mysql_web.config配置mysql数据库连接
- Hibernate入门之关系篇:多对一和一对多映射
- WPF中TreeView.BringIntoView方法的替代方案
- layui复选框组件:如何操控隐藏域实现checked状态切换(含代码、案例、截图)
- UI设计素材|卡券界面设计
- flink Sql查询异常NoResourceAvailableException: Could not acquire the minimum required resources
- 【异常检测】Isolation forest 的spark 分布式实现
- Android通讯录(一)
- (售前)销售经理和产品经理的区别以及未来发展
- 修改版本名称及手机型号
- 无密码多重身份验证(MFA)2022年全球行业分析报告
- 五猴分桃问题的数学解
- matlab simulink 实现简单的脉宽调制PWM仿真
- spring cloud 2020.0.3 学习记录(四)配置中心config以及bus实现自动配置更新
- 多线程下载图片并压缩
- C语言中闭包的探究及比较
- 雄迈云服务器ip,中国版各大服务器ip 用于客户端登录