在更改的测试文件上重复运行pytest

时间:2018-01-22 20:18:07

标签: python python-3.x pytest

我想在Python中多次运行pytest而不重新启动脚本/解释器。

问题是pytest正在缓存测试内容/结果。也就是说,如果您在两次运行之间修改测试文件,则pytest不会获取更改,显示与之前相同的结果。 (除非你重新启动脚本/退出解释器,你在命令行中使用pytest时自然会这样做。)

生殖

test_foo.py

def test_me():
    assert False

在Python shell中:

>>> import pytest
>>> pytest.main(['test_foo.py'])
(...)
    def test_me():
>       assert False
E       assert False

test_foo.py:2: AssertionError

到目前为止很好。现在不要退出解释器,而是将测试更改为assert True并重新运行pytest。

>>> pytest.main(['test_foo.py'])
(...)
    def test_me():
>       assert True
E       assert False

test_foo.py:2: AssertionError

预期结果

Pytest应该已经获取了文件中的更改并通过了重写测试。

无效的解决方案

  • 使用importlib.reload(pytest)在运行之间重新加载pytest。

  • 使用已清除的缓存运行pytest:pytest.main(['--cache-clear', test_foo.py'])

(将pytest作为子进程运行不是一个选项,因为我想在我的应用程序中引用pytest模块。)

任何提示如何使pytest获取这些更改或如何正确地重新加载模块?

0 个答案:

没有答案