pytest文档51-内置fixture之cache使用

前言

pytest 运行完用例之后会生成一个 .pytest_cache 的缓存文件夹,用于记录用例的ids和上一次失败的用例。
方便我们在运行用例的时候加上—lf 和 —ff 参数,快速运行上一次失败的用例。
—lf, —last-failed 只重新运行上次运行失败的用例(或如果没有失败的话会全部跑)
—ff, —failed-first 运行所有测试,但首先运行上次运行失败的测试(这可能会重新测试,从而导致重复的fixture setup/teardown)
—lf 和 —ff 相关介绍查看之前的这篇https://www.cnblogs.com/yoyoketang/p/9769559.html

cache

pytest -h 查看命令行参数,关于 cache 参数的使用方式

>pytest -h --lf, --last-failed rerun only the tests that failed at the last run (or all if none failed) --ff, --failed-first run all tests but run the last failures first. This may re-order tests and thus lead to repeated fixture --nf, --new-first run tests from new files first, then the rest of the tests sorted by file mtime --cache-show=[CACHESHOW] show cache contents, don't perform collection or tests. Optional argument: glob (default: '*'). --cache-clear remove all cache contents at start of test run.

参数说明:

  • —lf 也可以使用 --last-failed 仅运行上一次失败的用例
  • —ff 也可以使用 --failed-first 运行全部的用例,但是上一次失败的用例先运行
  • —nf 也可以使用 --new-first 根据文件插件的时间,新的测试用例会先运行
  • —cache-show=[CACHESHOW] 显示.pytest_cache文件内容,不会收集用例也不会测试用例,选项参数: glob (默认: '*’)
  • —cache-clear      测试之前先清空.pytest_cache文件

—cache-show

测试案例代码test_x.py

# test_x.py # 作者-上海悠悠 QQ交流群:717225969 # blog地址 https://www.cnblogs.com/yoyoketang/ def test_01(): a = "hello" b = "hello" assert a == b def test_02(): a = "hello" b = "hello world" assert a == b def test_03(): a = "hello" b = "hello world" assert a in b def test_04(): a = "hello" b = "hello world" assert a not in b

命令行输入 运行完成后,会有2个用例失败,2个用例成功

>pytest test_x.py --tb=no ============================= test session starts ============================= collected 4 items test_x.py .F.F [100%] ===================== 2 failed, 2 passed in 0.11 seconds ======================

运行完成后,会在当前的目录生成一个 .pytest_cache 的缓存文件夹,层级结构如下

lastfailed 文件记录上一次运行失败的用例

{ "test_x.py::test_02": true, "test_x.py::test_04": true }

nodeids 文件记录所有用例的节点

[ "test_x.py::test_01", "test_x.py::test_02", "test_x.py::test_03", "test_x.py::test_04" ]

于是可以通过 pytest —cache-show 命令查看cache目录

D:\soft\kecheng202004\xuexi>pytest --cache-show ============================= test session starts ============================= cachedir: \.pytest_cache ---------------------------- cache values for '*' ----------------------------- cache\lastfailed contains: {'test_x.py::test_02': True, 'test_x.py::test_04': True} cache\nodeids contains: ['test_x.py::test_01', 'test_x.py::test_02', 'test_x.py::test_03', 'test_x.py::test_04'] cache\stepwise contains: [] ======================== no tests ran in 0.02 seconds =========================

—cache-clear

—cache-clear 用于在测试用例开始之前清空cache的内容

pytest —cache-clear

查看pytest关于cache的更多文档 https://docs.pytest.org/en/latest/cache.html

课程预告:第五期课程预计10月份开学!

2020年第四期《python接口自动化+测试开发》课程,7月4号开学(火热报名中!

(0)

相关推荐