pytest--函数
pytest.approx(num):断言两个数字(或两组数字)在某个容差范围内彼此相等。
由于浮点运算的复杂性,我们直觉期望相等的数字并不总是如此,此时可使用。
from pytest import approx >>> 0.1 + 0.2 == approx(0.3) True
pytest.fail(msg='', pytrace=True): 使用给定消息显式地设置用例为失败状态。
参考:Skip和xfail:处理无法成功的测试
参数:
- msg(str) - 显示用户失败原因的消息。
- pytrace(bool) - 如果为false,则msg表示完整的失败信息,并且不报告任何python回溯。
pytest.skip(msg[, allow_module_level=False]): 使用给定消息跳过测试用例。
应仅在测试(设置,调用或拆除)期间或使用allow_module_level标志在收集期间调用此函数。此函数也可以在doctests中调用。
参数:
- allow_module_level(bool) - 允许在模块级别调用此函数,跳过模块的其余部分。默认为False。
注意:最好在可能的情况下使用pytest.mark.skipif标记来声明在某些条件下跳过的测试,例如不匹配的平台或依赖项。
pytest.importorskip(modname, minversion=None, reason=None): 导入并返回模块modname,或者如果无法导入模块,则跳过当前测试。
参数:
- modname(str) - 要导入的模块的名称
- minversion(str) - 如果给定,导入的模块__version__属性必须至少为此最小版本,否则仍会跳过测试。
- reason(str) - 如果给定,则无法导入模块时,此原因显示为消息。
pytest.xfail(reason=''): 强制标记失败测试用例或测试准备函数,可给定原因。
只能在测试函数或setup函数或teardown函数中使用此函数。
注意:最好在可能的情况下使用pytest.mark.xfail标记
pytest.exit(msg, returncode=None): 退出测试过程。
参数:
- msg(str) - 退出时显示的消息。
- returncode(int) - 返回退出pytest时使用的代码。
pytest.main(args=None, plugins=None): 进程内执行测试运行,返回值为退出码。
参数:
- args- 命令行参数列表。
- plugins- 初始化期间要自动注册的插件对象列表。
pytest.param(*values[, id][, marks]): 给pytest.mark.parametrize指定参数。
@pytest.mark.parametrize("test_input,expected",[("3+5",8), pytest.param("6*9",42,marks=pytest.mark.xfail),]) def test_eval(test_input,expected): assert eval(test_input) == expected
参数:
- values- 按顺序的参数集值的变量args。
- id(str) - 属于此参数集的id。
- 标记- 要应用于此参数集的单个标记或标记列表。
pytest.raisesraises(expected_exception: Exception[, match]) 断言代码块/函数调用会引发expected_exception或引发失败异常。
参数:
- match- 如果指定,则断言异常与text或regex匹配
1.使用pytest.raises的上下文管理器,这将捕获特定类型的异常:
>>> with raises(ZeroDivisionError): ... 1/0
如果代码块没有引发预期的异常,或者根本没有异常,则检查将失败。
2.还可以使用keyword参数match来断言异常与text或regex匹配:
>>> with raises(ValueError,match='must be 0 or None'): ... raise ValueError("value must be 0 or None") >>> with raises(ValueError,match=r'must be \d+/pre>): ... raise ValueError("value must be 42")
3.上下文管理器生成一个ExceptionInfo对象,可用于检查捕获的异常的详细信息:
with raises(ValueError) as exc_info: ... if value > 10: ... raise ValueError("value must be <= 10") ... >>> assert exc_info.type is ValueError
pytest.warns(expected_warning: Exception[, match]): 断言代码会引发一类特定的警告。
具体来说,参数expected_warning可以是警告类或警告类序列,并且with块内部必须发出该类或类的警告。
该助手生成一个warnings.WarningMessage对象列表,每个警告引发一个对象。
此函数可用作上下文管理器,pytest.raises也可以使用任何其他方法:
with warns(RuntimeWarning): ... warnings.warn("my warning",RuntimeWarning)