George555     公众号:测试江湖驿站

如果这些内容对你有帮助,也可以打开微信扫一扫,加关注:

好多同学在问Airtest写的用例怎么管理,怎么执行,官方用了unittest做了二次封装来处理,而笔者经过实践,换用了pytest,感觉写起用例能飞起来~

接下来就写下用pytest来组织用例的思路方法。如果你还不会pytest使用,请进入下面的传送门>>>

python-pytest使用(1)-基础

python-pytest使用(2)-fixture

python-pytest使用(3)-conftest

python-pytest使用(4)-多线程多进程运行

1.接入pytest框架设计出发点:

A.框架简单易用,易上手

B.大部分代码方法来源于官网方法,免去自己框架约束的学习成本

C.可选择性执行用例

D.可并发执行用例

2.先看看目录结构设计思路

A.根目录的3个文件:总方法main.py、conftest.py、pytest.ini

main方法很简单,主要是调用pytest命令来执行所有用例,代码如下:

import pytestif __name__ == '__main__':    pytest.main(['-s'])   #顺序执行#     pytest.main(['-n=2'])  #多进程并发

根目录放conftest.py的目的是在这里做所有airtest和poco的初始化对象。

import pytest,osfrom airtest.core.api import *from poco.drivers.android.uiautomation import AndroidUiautomationPocofrom poco_test.utils.util import *@pytest.fixture(scope='function', params=(getConnectDevices()),name='newpoco')def poco(request):#    '''poco对象预设值    @return: 返回poco对象,用newpoco代替'''    connect_device(request.param['uri'])    newpoco=AndroidUiautomationPoco(device=device())    start_app(GS.packageName)    sleep(10)    yield newpoco    sleep(3)    stop_app(GS.packageName)    sleep(3)@pytest.fixture(scope='function', params=(getConnectDevices()),name='newAirtest')def airtest(request,initEnv):#    '''airtest对象预设值'''    connect_device(request.param['uri'])        start_app(GS.packageName)    sleep(10)    yield     sleep(3)    stop_app(GS.packageName)    sleep(3)

备注:目前由于airtest对于跨设备的截图识别存在兼容问题还在摸索中,这里先加入初始化待用。

根目录放pytest.ini,目的是简化main方法执行参数,以及用例可按mark标记执行

[pytest]marker =   smokeTest  functionTest#addopts = -v -s --reruns 3 --reruns-delay=3 --html=.\\report\\testreport.html

B.用例创建

这里需要创建两大块airtest和poco用例,用于匹配两大框架。用例总目录为air_test、poco_test。而在这里用例设计方式借用之前用过的robotframework中思路,按照测试集-测试用例的方式管理。

如图中test_suite5_my的测试集下包含test_login和test_myConcern两个py测试文件,而这两个测试文件中分别有自己模块功能下的测试用例。(因为前提是使用pytest执行用例,那么它将会寻找项目目录下所有符合规则的test_开头的py文件去执行里面的测试方法。)

用例文件创建好了之后,那么用例该怎么写呢?下面给出test_myConcern文件中的测试用例代码

'''Created on 2019年9月27日@author: George测试点:我的关注'''import pytestfrom poco_test.utils.util import *LOGGER=get_logger(__name__)class TestMyAttention():    def test_001_clickMyAttention(self,newpoco):        LOGGER.info('执行test_002_clickMyAttention::点击-我的关注,检查QQ登录按钮')        newpoco(text='我的').click(sleep_interval=3)        newpoco(text='我的关注').click(sleep_interval=3)        qqLoginLabel=newpoco(text='QQ登录').get_text()        assert qqLoginLabel=='QQ登录','未找到QQ登录的标签'  if __name__ == '__main__':    pytest.main(['-s',__file__])

此代码可以单独运行,只运行当前py文件。也可以在根目录直接运行main方法,运行全部项目测试用例。

上面这些内容总体来说已经完成了poco结合pytest的项目环境搭建,再梳理下思路:

1.在根目录的conftest里面做poco的初始化动作,保证app可以打开,并返回poco对象

2.在编写用例时,只需要传入1中的poco对象,就不需要在每个用例中去连接、打开app、生成poco对象等操作了。

3.用例编写成功后,执行main方法,去执行全部项目用例,执行前去pytest.ini配置文件中找执行参数和执行的marker标签名(用例前面需要声明marker标签)。

4.最后生成测试报告,如图:

今天先写到这里,这个框架只是个简单示例,做为一种思路的分享,后面还需要加入更多功能,大家可以自由发挥。

比如:兼容Android、ios、win、web平台的初始化;对官方部分方法做2次封装更适用自己;报告的优化引入allure;测试数据分离等。

后面内容更新请持续关注。

#####欢迎大家加群交流####

QQ:464314378

微信群请先加群主微信,群主会拉各位小伙伴进群,注意添加备注。

Airtest+Poco+Pytest框架搭建1相关推荐

  1. Airtest+Poco多设备并发自动化游戏测试框架(遇到的问题)

    项目:基于unity3d项目 涉及相关模块:关卡,战斗,商城,装备,强化,天赋等 记录:Airtest+poco+pycharm自动化游戏测试过程中发现的问题以及解决的方法 目标:自动化打包安装,多机 ...

  2. requests+pytest+allure接口测试框架搭建

    文章目录 requests+pytest+allure接口测试框架搭建 一.创建项目![在这里插入图片描述](https://img-blog.csdnimg.cn/969aa95077fc447c9 ...

  3. pytest接口自动化框架搭建

    目录: 一.设计思路-整体框架: 二.具体框架搭建 1.公共方法-common 1.1.yaml_util.py 1.2.excel_util.py 1.4.text_ util.py 1.5.exc ...

  4. pytest+allure框架搭建(MacOS)

    Allure框架是一种灵活的轻量级多语言测试报告工具,它不仅能够以简洁的web报告形式显示已测试的内容,而且允许参与开发过程的每个人从测试的日常执行中提取最大限度的有用信息.具有开源,轻量级,多语言支 ...

  5. pytest teardown 未执行_python3+pytest+allure框架搭建之pytest详解(一)

    前言:之前在网上查了不少关于pytest的资料,总结了一下pytest比较重要的点: 1.可以更好的控制测试用例 2.支持很多第三方插件,并可以自定义扩展 3.执行失败的测试用例可以重复执行 4.可以 ...

  6. pytest接口自动化测试框架搭建

    文章目录 一. 背景 二. 基础环境 三. 项目结构 四.框架解析 4.1 接口数据文件处理 4.2 封装测试工具类 4.3 测试用例代码编写 4.4 测试用例运行生成报告 一. 背景 Pytest目 ...

  7. 网易UI自动化测试探索:Airtest+Poco

    1. 自动化测试 自动化测试的目的,就是为了"更快更好"地发现产品问题,有效提升产品质量.目前比较主流的自动化测试包含单元测试自动化.接口自动化和UI自动化. 相比接口自动化测试来 ...

  8. 一、自动化测试——Airtest+Poco快速上手

    1.前言 本文档将演示使用AirtestProject专用的编辑器AirtestIDE,编写Airtest+Poco自动化脚本的全流程.强烈建议新手从本文档开始阅读,并使用AirtestIDE上手脚本 ...

  9. 1-5分钟上手自动化测试——Airtest+Poco快速上手

    1 | 5分钟上手自动化测试--Airtest+Poco快速上手 1.1 前言 本文档将演示如何使用Airtest Project专用的编辑器AirtestIDE,编写Airtest+Poco自动化脚 ...

最新文章

  1. eruke注册中心搭建
  2. 输出控制台传递的参数——小小实例。
  3. OC语言Block和协议
  4. Selenium IDE安装和检查获取的控件路径技巧
  5. python+OpenCV图像处理(十二)车牌定位中对图像的形态学组合操作处理
  6. Django合并多个查询结果
  7. python加载机制_Python插件机制实现详解
  8. IP地址的分类及子网划分
  9. 主干网络系列(4) -ResNeXt: 批量残差网络-作用于深度神经网络的残差聚集变换
  10. 密码学加解密实训(墨者学院摩斯密码第2题)
  11. 201671010133 2016-2017-2 《java程序设计》 初学java!
  12. 光谱共焦测量原理是什么
  13. 零和博弈 (社会学概念)
  14. 侧脸生成正脸概论与精析
  15. domoticz添加和风天气与彩云天气
  16. 六星经典CSAPP笔记(2)信息的操作和表示
  17. 阿里云全站加速是什么?与CDN有什么区别
  18. 你还记得吗?这几种超级重要的统计学分布
  19. 【转】华为路由器、交换机设备模拟器
  20. 第十二篇.最重要的合并函数Con介绍

热门文章

  1. android 群控 网络 adb,逍遥安卓模拟器群控源码
  2. C++小工修炼手册XXVII (二叉搜索树的简单实现以及原理解释)
  3. 解决‘parent.relativePath‘ of POM xxx points at yyy instead of zzz please verify your project structure
  4. 借助RESTful API,用Excel开发网站,可用于多人在线实时编辑Excel,有实例下载
  5. 网站推广软件-最新网站推广软件【推荐】
  6. mysql 连接 linux命令行_linux命令行链接mysql数据库
  7. win10家庭版安装VMWare和Ubuntu 20.04 LTS
  8. Android vs iOS 程序开发:我该选哪一个?
  9. Arduino 串口发送数据代码
  10. 渗透测试工程师都需要什么工具呢?网络安全(一)