用Airtest搭建UI自动化用例框架的学习路径

目标:搭建pytest+airtest+allure的UI自动化测试用例框架
简介:
1、pytest:单元测试框架,管理和执行用例
2、airtest:图像识别,Poco控件识别,设备连接与驱动
3、allure:测试报告,也可以直接使用pytest的报告

学习路径和计划

第一步:学习 Python 基础

  • 如果你还不熟悉 Python,建议你先学习 Python 的基础知识,包括语法、数据类型、函数等。
  • 面向对象编程,异常处理,文件操作(可以在看airtest源码中学习)

第二步:学习 pytest

  • 了解 pytest 的基本概念和用法,包括如何编写测试用例、断言、测试夹具(Fixtures)和插件等。
  • 练习编写简单的 pytest 测试用例,熟悉 pytest 的各种功能和用法。
  • 使用pytest运行和管理测试
    pytest 测试夹具的常见用法:
  • setup/teardown:在每个测试用例之前执行一次设置操作,以及在每个测试用例之后执行清理操作。
  • module-level setup/teardown:在测试模块级别执行设置和清理操作,即在模块中的所有测试用例执行之前和之后执行一次。
  • class-level setup/teardown:在测试类级别执行设置和清理操作,即在测试类中的所有测试用例执行之前和之后执行一次。
  • 参数化夹具:允许将参数传递给测试用例,以便在多组输入数据上运行相同的测试逻辑。
  • 临时目录夹具:在测试过程中创建临时目录,并在测试完成后自动清理。

下面是一个简单的示例,展示了如何在 pytest 中使用测试夹具:

pythonCopy code

import pytest

# 定义一个 module 级别的 setup 操作
@pytest.fixture(scope="module")
def setup_module():
    print("\nSetup Module")
    # 执行设置操作
    yield
    print("\nTeardown Module")
    # 执行清理操作

# 定义一个 function 级别的 setup 操作
@pytest.fixture
def setup_function():
    print("\nSetup Function")
    # 执行设置操作
    yield
    print("\nTeardown Function")
    # 执行清理操作

# 测试用例
def test_example(setup_module, setup_function):
    print("Executing Test")

# 参数化测试用例
@pytest.mark.parametrize("input_data, expected", [("data1", "result1"), ("data2", "result2")])
def test_parameterized(input_data, expected, setup_function):
    print(f"Input data: {input_data}, Expected result: {expected}")

在上面的示例中,setup_modulesetup_function 分别是 module 级别和 function 级别的测试夹具。它们在执行测试用例之前进行设置操作,并在测试用例执行完毕后进行清理操作。

使用 pytest 的测试夹具可以帮助你编写更清晰、更模块化的测试代码,并提高测试的可维护性和可重复性。

第三步:学习 airtest

  • 学习使用 airtest 进行移动应用程序的 UI 自动化测试。
  • 了解如何安装 airtest,并学习其基本用法和命令行工具。
  • 编写和运行airtest脚本,阅读airtest的源码,可以从运行器开始看

第四步:学习 poco

  • 了解 poco 是什么以及它如何与 airtest 结合使用。
  • 学习如何使用 poco 来查找和操作移动应用程序中的 UI 元素。

第五步:整合 pytest、airtest 和 poco

  • 将所学的知识整合起来,使用 pytest 编写 UI 自动化测试用例,使用 airtest 进行图像识别定位和驱动设备进行UI 操作,使用 poco 进行元素查找和断言。
  • 使用page object模式封装页面类,兼容iOS、Android,将同一控件的不同定位查找方式封装在一层,方便维护

学习资料和博客