微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐