从模块内部运行pytest似乎缓存测试

bri*_*fox 5 python unit-testing pytest

我最近开始玩pytest,我使用pytest.main()来运行测试.然而,似乎pytest缓存了测试.对模块或测试所做的任何更改都将被忽略.我无法从命令行运行pytest所以pytest.main()是我唯一的选择,这是因为在我的ipad上编写python.

我已经广泛搜索了这个,并且能够找到一个类似的问题,建议从命令行运行pytest.任何帮助将不胜感激.

谢谢,

msw*_*msw 3

Pytest 不缓存任何内容。每个 Python 解释器实例只能读取一次模块(文件)。

有一个reload内置的,但它几乎从不做你希望它做的事情

所以如果你正在跑步

import pytest
...
while True:
    import my_nifty_app
    my_nifty_app.be_nifty()
    pytest.main()
Run Code Online (Sandbox Code Playgroud)

my_nifty_app.py即使它在磁盘上发生更改,也会被读取一次且仅一次。你真正需要的是类似的东西

 exit_code = pytest.main()
 sys.exit(exit_code)
Run Code Online (Sandbox Code Playgroud)

这将结束解释器的实例,这是确保重新读取源文件的唯一方法。