编辑:非常感谢任何测试建议,但我特别想知道是否有pytest可以强制实现隔离,而不是依赖于我自己始终记得清理模拟。
pytest
是否支持在单个Python文件之间“重置”进程状态,或以其他方式将测试文件彼此隔离?
我们的CI过去会像这样调用单个文件上的pytest:
pytest file1.py
pytest file2.py
...
现在它会一次性为所有文件调用pytest,如下所示:
pytest file1.py file2.py ...
当一些测试文件(例如file1.py
)执行模块级别的mock时,我们遇到了问题。例如(简化):
def setup_module():
patch("path.to.some.module.var", Mock()).start()
(没有相应的teardown_module
。)
当pytest逐个文件运行时,这样做很好。但是当它运行多个文件时,先前执行的测试代码所做的任何模拟都会持续到后续的测试代码中。是否有任何方法在文件之间“重置”此状态?例如,pytest是否支持一种调用每个文件测试的分离进程的方法?(查看了pytest文档,但没有找到类似的内容。)
目前,我们正在添加teardown_module()
函数,该函数调用patch.stopall()
,但是让pytest隐式地将我们的测试文件相互隔离会更好。
pytest
将文件彼此隔离,而不管每个文件内部发生了什么。 - undefined