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

时间:2014-06-15 06:19:47

标签: python unit-testing pytest

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

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

谢谢,

1 个答案:

答案 0 :(得分:2)

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

内置reload,但it almost never does what you hope it will do

所以,如果你正在运行

import pytest
...
while True:
    import my_nifty_app
    my_nifty_app.be_nifty()
    pytest.main()

my_nifty_app.py将被读取一次,即使它在磁盘上发生变化也只会被读取一次。你真正需要的是像

 exit_code = pytest.main()
 sys.exit(exit_code)

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