Airtest+Poco+Pytest框架搭建1

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, Python, Pytest, Allure是一些用于实现Android App自动化测试框架的工具。这些工具结合使用可以实现对应用元素的定位(使用AirtestPoco),测试用例的管理和执行(使用Pytest),以及生成测试报告(使用Pytest-HTML或Allure)。 Airtest是一个基于Python的UI自动化测试框架,它可以用于Android、iOS等平台的应用自动化测试。它提供了丰富的API来进行界面元素的定位和操作,以及对应用的各种操作进行模拟和验证。 PocoAirtest的一个扩展库,它提供了一套更简单易用的API来进行应用元素的定位和操作。Poco可以与Airtest结合使用,使得测试用例编写更加简单和高效。 Python是一种流行的编程语言,对于测试框架的编写和测试脚本的编写都非常适用。通过使用Python,可以方便地编写和管理测试用例,以及进行各种数据处理和操作。 Pytest是Python的一个测试框架,它提供了丰富的功能和插件来管理和执行测试用例。Pytest可以与AirtestPoco结合使用,以便更好地管理和执行自动化测试用例。 Allure是一个用于生成漂亮且可视化的测试报告的工具。它可以将测试结果以图表和图形的形式展示,能够清晰地展示测试用例的执行情况和结果。 综上所述,AirtestPoco、Python、Pytest和Allure都是在Android App自动化测试中常用的工具和框架。它们的结合使用可以帮助开发人员和测试人员更方便地进行自动化测试的编写、管理和执行,并生成美观的测试报告来展示测试结果。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Python + Airtest + poco + pytest + pytest-html 实现Android App自动化测试框架](https://blog.csdn.net/weixin_38813807/article/details/129179944)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [airtest/poco+pytest+allure+jenkins框架来了](https://blog.csdn.net/George513/article/details/119034783)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值