Python,一个测试影响另一个

Python,一个测试影响另一个,python,logging,pytest,code-coverage,test-coverage,Python,Logging,Pytest,Code Coverage,Test Coverage,有两个测试。第一个检查日志模块是否将所有信息记录到日志文件中: def test\u登录到多个模块(self): “”“确保在许多文件中正确使用记录器”“” 运行(1,1,False) 打开(“darwin.log”)作为日志文件: content=log_file.read() #检查日志是否发生在主模块中 断言(“libs.population”,内容) self.assertIn(“libs.individual”,内容) 断言(“libs.mutation”,内容) 断言(“libs.s

有两个测试。第一个检查日志模块是否将所有信息记录到日志文件中:

def test\u登录到多个模块(self):
“”“确保在许多文件中正确使用记录器”“”
运行(1,1,False)
打开(“darwin.log”)作为日志文件:
content=log_file.read()
#检查日志是否发生在主模块中
断言(“libs.population”,内容)
self.assertIn(“libs.individual”,内容)
断言(“libs.mutation”,内容)
断言(“libs.selection”,内容)
self.assertIn(“libs.chromose”,内容)
断言(“libs.crossover”,内容)
run()
方法只执行我的整个程序

此外,我还进行了测试,以实现100%的测试覆盖率。我正在测试主可执行文件
darwin.py
中的
是否为

如果名称=“\uuuuu main\uuuuuuuu”:
main()
此测试:

@mock.patch(“darwin.run”)
@mock.patch(“argparse.ArgumentParser.parse_args”)
def test_uuuname_uuuu_uuu_uuumain_uuu(self、mock_argparse、mock_run):
“”“测试是否执行了\uuuuuu name\uuuuuu='\uuuuuu main\uuuuuuuuu'块代码。”“”
mock_argparse.return_value=argparse.Namespace(
populationSize=1,numberOfIterations=1,sendMail=False)
loader=importlib.machine.SourceFileLoader(“\uuuuu main\uuuuuu”,“darwin.py”)
mod=types.ModuleType(loader.name)
加载程序执行模块(mod)
打开(“darwin.log”)作为日志文件:
content=log_file.read()
断言(“\uuuuu main\uuuuuuuu”,内容)
我使用
pytest
库运行测试。Pytest按字母顺序运行测试,因此将首先测试
test\uuuuuu name\uuuu main
。如果我单独运行此测试,则所有测试都通过。此外,如果测试顺序为
test\u登录到多个模块
第一个和
test\u名称\u主模块
第二个,则所有操作均按预期进行。问题是,当首先执行
test\uuuu name\uuuu main\uuuu
时,它会以某种方式从日志模块中断
FileHandler
,并且无法将任何内容登录到
darwin.log
文件中

知道为什么会这样吗?
提前感谢;)

可能是因为
darwin.run
仍处于修补状态-将smth添加到
test\u日志记录到许多模块中,然后使用
-s
开关重新运行测试-打印什么,一个
?不,我已经尝试过了。实际上,
None
被打印可能是因为
darwin.run
仍然被打补丁-将smth像
print(run)
添加到
test\u登录到多个模块中
,然后用
-s
开关重新运行测试-打印什么,一个
?不,我已经尝试过了。实际上,
None
已打印