写在前面
文档中一部分摘抄了pytest中文文档和百度的搜索结果,记录下来方便自己以后查阅。
参数选项
-s
允许运行的时候打印输出(print)
pytest -s
--collect-only
Pytest --collect-only
-k
运行所有包含关键词的测试
pytest -k "keyword"
-m
运行指定标签的用例,多个标签以逗号间隔
设置标签:
@pytest.mark.mark1
def test_01_testcase()
pytet -m mark1, 即可运行有该标签的test_01_testcase用例
-x
运行失败时停止测试执行
pytest -x
--tb=no
不打印报错信息
--maxfail=num
规定最大失败次数,如果超过失败次数则停止测试
pytest --maxfail=3
-v
pytest -v
执行当前路径下的测试用例并显示详细信息
--lf
运行结束后会运行本次失败的用例
--ff
运行结束后如有失败的用例,重新执行所有用例
日志
pytest默认捕获WARNING或以上级别的日志并在测试结束后输出
如果要格式化日志和时间:
pytest ‐‐log‐format="%(asctime)s %(levelname)s %(message)s" ‐‐log‐date‐format="%Y‐%m‐%d %H:%M:%S"
也可在pytest.ini中设置:
[pytest]
log_format = %(asctime)s %(levelname)s %(message)s
log_date_format = %Y‐%m‐%d %H:%M:%S
API
pytest.approx
approx(expected, rel=None, abs=None, nan_ok=False)
判断两个或两组数字在允许范围内是否相等
pytest.fail
fail(msg="", pytrace=True)
msg: 显示给用户的失败消息
pytrace: 如果设置为False,则使用msg作为完整的失败信息而不显示traceback
skip
跳过某个测试
@pytest.mark.skip(reason="跳过原因")
skipif
有条件的跳过某个测试
@pytest.mark.skipif(python表达式,跳过条件)
xfail
意料之中的失败,如果用例执行成功,测试结果为失败
@pytest.mark.xfail(strict=True)
raises
@pytest.mark.xfail(raises=Error)
如测试失败,raise指定Error