计算测试示例¶
在前面的例子中,我们只对测试步骤做了【加法计算】这一种处理,
在实际项目中,测试步骤的类型往往有多种 不同的步骤类型 ,需要不同的方式去执行。
接下来我们实现支持加、减、乘、除这4种类型的的计算测试,来模拟演示不同步骤类型的实现方式
设计用例¶
这一次,我们将每一行数据的 关键字 字段进行修改,用以表示步骤的类型
关键字 |
|||
|---|---|---|---|
name |
计算测试 |
||
add |
111 |
222 |
333 |
subtract |
111 |
333 |
-111 |
multiply |
111 |
333 |
222 |
divide |
111 |
222 |
0.5 |
为了保持简单,本例不同的步骤类型中内容格式是相同的,但这不是强制要求,你可以为不同的步骤类型定义不同的内容格式、不同的处理方式。
警告
如果每个步骤的参数数量不一致,则需要在钩子中小心处理
实现钩子¶
由于测试步骤发生了变化,钩子必须更新才正确处理。
在新的钩子实现中,我们需要做到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_results == expected_results
return True
执行结果如下:
(.venv) C:\demo\pytest-xlsx-demo>pytest
=========================== test session starts ============================
platform win32 -- Python 3.12.0, pytest-8.2.2, pluggy-1.5.0
rootdir: C:\demo\pytest-xlsx-demo
configfile: pytest.ini
plugins: xlsx-2.0.0
collected 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: AssertionError
assert -222 == -111
========================= short test summary info ==========================
FAILED tests/example/test_case.xlsx::Sheet1::计算测试
============================ 1 failed in 0.03s =============================
在结果中可以看到详细的说明:第二个测试步骤 断言失败
小结¶
至此,便实现了四种不同步骤类型的计算测试,根据需要,你还可以再定义更多的步骤类型。 在符合xlsx用例基本格式的前提下,用例的步骤可以写任意内容,只需要钩子函数对其进行处理即可。
简而言之:
xlsx记录步骤内容
钩子执行步骤内容