开发 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),以及对应的模型文件

Python
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 将生成一份详细的测试报告,包含以下内容:

  • 测试摘要:测试用例的总数、通过和失败的数量等。
  • 详细结果:每个测试步骤的执行状态(如“通过”或“失败”)及错误信息,便于分析和调试。

此外,您可以在报告中添加自定义截图,增加报告的可视化和信息丰富度。参考如何向报告中添加附加信息

测试报告示例

results matching ""

    No results matching ""