如何使用Pytest+Poco框架实现UI自动化,适合初学者

1. 项目简要

项目结合 Pytest+Airtest中的Poco框架 做UI自动化

Airtest资料地址
https://airtest.doc.io.netease.com/IDEdocs/airtest_framework/0_airtest_info/

参考PO模型进行项目结构设计

PO模型详解
https://zhuanlan.zhihu.com/p/429912748

2. UI自动化所需工具

  • AirtestIDE: 跨平台的UI自动化编辑器

Airtest入门 - AirtestIDE基本使用_闪亮伞的博客-CSDN博客
https://q9jvw0u5f5.feishu.cn/docx/AU19dENPDodzeoxCykxctdDGnkc#Kgfkd10wfoP1sRxmlTWcs02Dnbc

  • PyCharm: Python 集成开发环境

PyCharm安装教程,Pycharm下载使用教程 - Pycharm.com.cn
https://q9jvw0u5f5.feishu.cn/docx/AU19dENPDodzeoxCykxctdDGnkc#GLHYdBLYSou6bfx8psTcnRzKn4b

3. 自动化使用特殊包

  1. 需要手动赋应用所需系统权限
  2. 需要屏蔽应用内相关弹窗,以防阻碍自动化进行

4. 项目目录结构设计

├─.idea
├─.pytest_cache
├─airtest
├─assets
├─common //存放通用方法
├─core //存放常用方法
│ ├─file_reset
├─image //存放图片识别相关的图片
│ └─home
├─page //存放页面级别操作
│ ├─auth
│ ├─channel
├─poco
├─report //存放测试报告
│ └─assets
├─TestCase //存放ui自动化用例
│ ├─channel

5. 如何编写ui自动化用例

(以Android机型为例)

步骤一:在AirtestIDE中利用poco辅助窗上获取UI控件,操作控件

1.Poco辅助窗选择Android
2.选择控件定位
3.在设备窗将鼠标移到需要选中的控件上
4.双击Poco辅助窗下显示的定位到的控件元素,脚本编辑窗会以代码形式出现对应的控件

在这里插入图片描述
[图片]

Poco可以使用类似 poco(“OK”).click() 的方式来获取并操作节点
在这里插入图片描述
在这里插入图片描述

步骤二:复制控件元素到Pycharm

1.提前导入poco和airtest包,复制控件操作代码到项目代码中。(页面操作放在page目录)

from airtest.core.api import *
from poco.drivers.android.uiautomation import AndroidUiautomationPoco
poco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False)
class Channel:
    """房间相关的操作"""
    @staticmethod
    def join_channel():
        """点击首页进房按钮,进房"""
        poco("My Room").wait_for_appearance(timeout=10)
        poco("My Room").click()
        poco("MLBB").wait(timeout=5).click()
        poco("Start").click()
        assert_equal(poco("RANK").exists(), True, "MLBB房间页面")

原则:

  1. 每个页面功能操作放在一个方法中
  2. 一个页面中的操作,起始页面最好统一 (用例结束后,操作最好回到统一的页面,以保证上一个页面操作不会影响下一个页面操作)
  3. 每个用例操作都需要断言
  4. 有些页面加载慢可以增加等待操作,poco有自带的等待点击事件或者用sleep方法
  5. 为了防止用例执行过程中出错可以增加装饰器跳过错误或进行重试

2.用例文件调用操作方法。(用例放在TestCase目录)

class TestJoinChannel:
    """进房用例用例集"""

    @testcase_fail_reset_page(ResetPage.CHANNEL)   //装饰器:重启应用回到房间页面
    def test_join_channel(self):
        """进房"""
        channel.join_channel()

步骤三:在配置文件中,指定用例执行顺序

创建配置文件conftest.py,导入以下代码,可以修改用例执行顺序。
注意: #appoint_classes 内是测试文件中的类名

def pytest_collection_modifyitems(config, items):
    """用例执行顺序"""
    # 期望用例顺序按照.py文件执行
    appoint_classes = {"TestDeviceInit": [], "TestJoinChannel": [], "TestSendScreen": [], "TestUpdateChannel": [],
                       "TestMicOperate": [], "TestLeaveChannel": []}

步骤四:输出测试报告

pytest.ini文件中插入以下代码,即可输出html格式报告

[pytest]
addopts = -s --html D:/ui-testing/report/report.html

输出其他更高级的测试报告,可以了解以下链接:(Allure报告)

Pytest测试框架(五):pytest + allure生成测试报告_-CSDN博客:
https://blog.csdn.net/u010698107/article/details/111416173?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_baidulandingword~default-0-111416173-blog-122713150.235v38pc_relevant_default_base&spm=1001.2101.3001.4242.1&utm_relevant_index=1

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值