开发 Pytest 项目
Pytest 是 Python 项目中常用的测试框架,它提供了简单、清晰的语法来编写和维护测试代码。与行为驱动开发(BDD)框架不同,Pytest 项目无需编写 feature
文件,而是通过函数直接定义测试内容。
在本教程中,您将学习如何将 CukeTest 中录制的自动化代码转化为符合 Pytest 格式的测试用例代码。
什么是 Pytest
Pytest 是一个轻量化的 Python 单元测试框架,因其简单灵活的语法和丰富的插件支持被广泛应用于各种测试场景。CukeTest 也内置了对 Pytest 的支持,您可以在 CukeTest 中轻松编写和运行 Pytest 项目。
编写测试用例
1. 创建 Pytest 测试文件
首先,在项目目录中创建一个以 test_
开头的测试文件名,便于 Pytest 自动识别,例如 test_notepad.py
。在此文件中,将 CukeTest 录制的代码作为测试函数,确保命名符合 Pytest 规范:
- 测试文件命名:以
test_
前缀命名文件,如test_notepad.py
。 - 测试方法命名:在测试文件中,测试函数的名称也应以
test_
开头,例如test_input_text()
。
2. 定义测试函数
在测试文件中,可以直接定义测试函数,并将每个测试用例的逻辑分离为独立的方法。以下示例展示了将 CukeTest 录制的步骤粘贴到 test_input_text()
测试方法中。
对于桌面自动化测试,在编写步骤定义函数时,需要确保已经加载桌面自动化模块(如:
WinAuto
),以及对应的模型文件。
import os
from leanproAuto import RunSettings, WinAuto, Util
# 运行设置
RunSettings.set({"slowMo": 1000, "reportSteps": True})
# 加载模型文件
modelWin = WinAuto.loadModel(os.path.dirname(os.path.realpath(__file__)) + "/model1.tmodel")
def test_input_text():
# 启动应用 "notepad.exe"
Util.launchProcess("C:\\Program Files\\LeanPro\\CukeTest\\bin\\notepad.exe")
# 设置控件值为 "Hello CukeTest!"
modelWin.getEdit("QTextEdit").set("Hello CukeTest!")
# 检查文本内容
modelWin.getEdit("QTextEdit").checkProperty("Text.text", "Hello CukeTest!")
# 调整字体大小
modelWin.getButton("Font").click()
modelWin.getList("QFontListView").select("36")
modelWin.getButton("OK").click()
# 验证截图
modelWin.getVirtual("QTextEdit_image").checkImage()
# 关闭应用
modelWin.getButton("关闭").click()
3. 重用设置和加载模型文件
为了提高代码复用性,可以将 RunSettings
和模型加载操作放在文件开头,以便在所有测试用例中共享。如果你有多个测试用例且希望在整个测试过程中只启动一次应用,可以在 conftest.py
文件中利用 pytest_sessionstart()
和 pytest_sessionfinish()
方法来控制应用的启动和关闭。
运行项目并生成测试报告
在 CukeTest 中,点击项目界面的 运行项目 按钮即可运行所有按 Pytest 规范编写的测试脚本。执行结束后,CukeTest 将生成一份详细的测试报告,包含以下内容:
- 测试摘要:测试用例的总数、通过和失败的数量等。
- 详细结果:每个测试步骤的执行状态(如“通过”或“失败”)及错误信息,便于分析和调试。
此外,您可以在报告中添加自定义截图,增加报告的可视化和信息丰富度。参考如何向报告中添加附加信息。