在前面的例子中,我们只对测试步骤做了【加法计算】这一种处理,
在实际项目中,测试步骤的类型往往有多种不同的步骤类型,需要不同的方式去执行。
接下来我们实现支持加、减、乘、除这 4 种类型的的计算测试,来模拟演示不同步骤类型的实现方式
设计用例
这一次,我们将每一行数据的关键字字段进行修改,用以表示步骤的类型:
为了保持简单,本例不同的步骤类型中内容格式是相同的,但这不是强制要求,你可以为不同的步骤类型定义不同的内容格式、不同的处理方式。
如果每个步骤的参数数量不一致,则需要在钩子中小心处理
实现钩子
由于测试步骤发生了变化,钩子必须更新才正确处理。
在新的钩子实现中,我们需要做到 2 点:
判断具体的步骤类型
根据不同的步骤类型,做出不同的测试动作
from pytest_xlsx import XlsxItem
def pytest_xlsx_run_step(item: XlsxItem): step = item.current_step action = step.get("关键字") # `_BlankField` # `_BlankField` 存储所有空白字段数据 num1, num2, expected_results = (step.get("_BlankField"))
match action: # 根据不同的步骤类型,匹配不同的测试动作 case 'add': # 加 actual_results = num1 + num2 case 'subtract': # 减 actual_results = num1 - num2 case 'multiply': # 乘 actual_results = num1 * num2 case 'divide': # 除 actual_results = num1 / num2
case _: raise ValueError('无法识别的步骤类型')
# 对步骤的执行结果进行断言 assert actual
执行结果如下:
(.venv) C:\demo\pytest-xlsx-demo>pytest=========================== test session starts ============================platform win32 -- Python 3.12.0, pytest-8.2.2, pluggy-1.5.0rootdir: C:\demo\pytest-xlsx-democonfigfile: pytest.iniplugins: xlsx-2.0.0collected 1 item
tests\example\test_case.xlsx F [100%]
================================= FAILURES =================================_______________________________ Sheet1.计算测试 ________________________________xlsx content:| | 关键字 | _BlankField | | ||-----|----------|---------------|-----|--------|| | add | 111 | 222 | 333 || >>> | subtract | 111 | 333 | -111 || | multiply | 111 | 333 | 222 || | divide | 111 | 222 | 0.5 |C:\demo\pytest-xlsx-demo\conftest.py:47: AssertionErrorassert -222 == -111========================= short test summary info ==========================FAILED tests/example/test_case.xlsx::Sheet1::计算测试============================ 1 failed in 0.03s =============================
在结果中可以看到详细的说明:第二个测试步骤 断言失败
下一步
至此,便实现了四种不同步骤类型的计算测试,根据需要,你还可以再定义更多的步骤类型。 在符合 xlsx 用例基本格式的前提下,用例的步骤可以写任意内容,只需要钩子函数对其进行处理即可。
简而言之:
xlsx 记录步骤内容
钩子执行步骤内容
在此基础上,可以实现接口或 UI 的自动化测试。
能看到这里说明是真爱,关注一下吧
领取专属 10元无门槛券
私享最新 技术干货