很多人可能想到的是多线程(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

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是比较关键的一部,

因为它会调用BaseDriver()类中的base_driver()方法,

以往我们的conftest是这样定义的:

但是现在不同了,这个basedriver()函数中必须传入一个device的实参,

这个实参是从哪里获得的?

pytest的fixture为我们提供了一种参数化的操作,

fixture可以带入参数params,依赖于这个fixture的一套测试会根据参数的不同运行多次,

而被装饰函数中通过特殊的request对象来访问每个参数:request.param访问的是列表中的每个元素

allure可以设置不同的特性:

allure.feature(功能点) allure.story(子功能点) with allure.step(步骤) allure.attach(附件)等

结合pytest,一个收集测试用例,一个生成测试报告。

现在通过allure在测试用例中给测试报告增加一些特性。

启动多个appium-server

之前有想过python代码执行appium命令的形式去自动启动appium服务,

但通过npm或cnpm安装appium命令行都有报错,只能手动启动。

很简单,打开两个appium客户端,一个设置端口为4723,一个4726,启动即可。

这方面的内容不做过多介绍,只看下构建和构建后的操作,

其中allure-results是pytest运行测试用例生成的xml报告所在的目录,

jenkins上的Allure Commandline插件会自动解析xml,生成对应的html报告

十分美观吧,右上角的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"]),

要想真正做到多台手机同时运行,就要用到多线程。

本文转载自柠檬班社区,未经允许谢绝转载

http://www.lemfix.com/topics/83

pytest allure测试报告_Appium+pytest+allure+jenkins如何实现多台手机连接相关推荐

  1. CSDN绝无仅有只此一篇:Appium+pytest+allure+jenkins如何实现多台手机连接详细教程教学

    使用appium可以实现app自动化测试,我们之前是连接一台手机去运行, 如何同时连接多台手机呢? 很多人可能想到的是多线程(threading). 今天分享一种比多线程更简单的方法,虽然不是多台手机 ...

  2. Pytest测试框架的基本使用和allure测试报告

    一.测试用例的识别与运行 目录识别 通过pytest.ini配置文件配置 如果未指定任何参数,则收集从testpaths(如已配置)或当前目录开始.另外,命令行参数可以在目录.文件名或节点ID的任何组 ...

  3. Pytest系列——allure(原理)之allure工具与Pytest测试框架集成

    官方介绍 1.Allure Framework是一种灵活的轻量级多语言测试报告工具,不仅可以以简洁的Web报告形式非常简洁地显示已测试的内容,也允许参与开发过程的每个人从日常测试中提取最大程度的有用信 ...

  4. 生成报告配置xml_升职加薪利器:Python+Pytest框架在Jenkins上生成Allure测试报告

    在自动化测试执行之后,生成一个美观大方的测试报告,也是测试过程中,非常最要的一环.测试报告直接反应了测试过程中发现的问题,分析测试报告是解决问题的最重要手段.那么一个专业的测试报告应该长什么样呢?废话 ...

  5. pytest allure测试报告_用Pytest+Allure生成漂亮的HTML图形化测试报告

    对于软件测试工作来说,测试报告是非常重要的工作产出.一个漂亮.清晰.格式规范.内容完整的测试报告,既能最大化我们的测试工作产出,又能够减少开发人员和测试人员的沟通成本. 本篇文章将介绍如何使用开源的测 ...

  6. pytest测试框架(七)---pytest与jenkins集成(pytest+jenkins+allure)

    目录 一.pytest注册命令行选项 1.addoption 2.pytestconfig.getoption 3.示例 二.Jenkins上显示allure测试报告 1.安装插件 2.配置Allur ...

  7. 最新出炉 全网最牛最新的pytest+requests+Python3.7+yaml+Allure+Jenkins+docker实现接口自动化测试【超详细】从0到封装

    接口自动化测试框架(用例自动生成) 项目说明 本框架是一套基于pytest+requests+Python3.7+yaml+Allure+Jenkins+docker而设计的数据驱动接口自动化测试框架 ...

  8. pyhton使用pytest框架生成allure测试报告

    一.基础环境 window环境:windows10python环境:python3.7pycharm: pycharm2020java环境:jdk1.8.0_151/jre1.8.0_301(可以不是 ...

  9. 自动化测试框架Pytest(三)——自定义allure测试报告

    pytest测试完成后,可以通过三方库生成好看的测试报告.今天就来学习一款allure测试报告. 一.安装allure-pytest 1.下载,解压,配置path路径. https://github. ...

最新文章

  1. C++类的使用(五)—— 多态
  2. git撤销commit 并保存之前的修改
  3. centos 7 通过yum安装dnf 包管理器
  4. SpringMVC中使用@RequestBody,@ResponseBody注解实现Java对象和XML/JSON数据自动转换)
  5. HDU 2553(N皇后问题)
  6. [LeetCode] Rotate Array
  7. WebService cxf视频教程
  8. 基于51单片机的简易计算器
  9. 航天飞机电子计算机象征是什么,航天飞机的特点是什么
  10. 量子计算机需要mK温度工作吗,格林函数法分析冷槽离子量子计算机中的温度效应.pdf...
  11. MNN C++输入图片多通道
  12. celeste第二章_蔚蓝_第二章_初露锋芒_免费小说阅读_飞卢小说网
  13. 如何设计领导可视化驾驶舱?分享多行业通用方法论
  14. Git解决“Could not resolve host:github.com“
  15. UFD203A101 3BHE019361R0101电 工理论、电子技术、信息处理、控制理论、电力系统分析
  16. 数据分析平台要点梳理
  17. 【发际线大作战】AndroidStudio使用Intent和ListView开发书签(spinner、intent、setOnItemLongClickListener、SimpleAdapter)
  18. msbuild 语法_msbuild 中文说明文档
  19. python:引入requests报错“could not be resolved” 解决方案
  20. java堆和栈的区别_JAVA中堆和栈的区别

热门文章

  1. dhtmlxtree api中文
  2. 1.4 Padding-深度学习第四课《卷积神经网络》-Stanford吴恩达教授
  3. STM32 电机教程 16 - PMSM电机磁场定向控制原理
  4. QT 中 关键字讲解(emit,signal,slot)以及使用
  5. 想写游戏吗?手把手教你SDL的安装及配置(亲测有效!)
  6. 关于最近练习PYTHON代码的一点心得
  7. 最简单的composer 包 使用
  8. webpack 环境安装
  9. 让你完全理解base64是怎么回事
  10. shell基础二:查找技巧,find及xargs的使用