目标:搭建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_module
和 setup_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,将同一控件的不同定位查找方式封装在一层,方便维护
学习资料和博客
-
pytest:
- pytest 文档
- Python 测试入门教程
- Real Python 上的 pytest 教程
-
airtest:
- airtest 官方文档
- airtest 官方 GitHub 仓库
- airtest 的基本用法介绍
- poco:
- 其他资源:可以看看scdn、testerhome上面有很多博客,关键字一搜就有很多教程,甚至demo工程也有。至于想深入学习,我建议是翻一翻源码,我之前也写过一些对airtest源码的学习解读,但是这个太早了,AirTest 源码分析之运行器 · TesterHome