Python unittest中startTestRun未执行:如何实现全局单次初始化
问题原因说明
1. IDE测试运行器未加载顶级__init__.py
你通过右键点击tests目录运行测试时,IDE(比如PyCharm)的测试运行逻辑通常是直接扫描并执行目录下的测试文件,不会把tests目录当作完整的Python包加载。这就导致tests目录下的顶级__init__.py根本没被执行,里面重写startTestRun的代码自然不会生效。
2. 方法重写时机不对
即使IDE加载了__init__.py,也可能存在时机问题:IDE会先初始化unittest.TestResult实例,之后才加载__init__.py里的代码。这种情况下,你重写的是类的方法,但已经创建好的TestResult实例还是用的原来的方法,不会触发你定义的逻辑。
3. unittest的startTestRun触发逻辑
startTestRun是由**TestRunner(测试运行器)**调用的,而非TestResult自身触发。如果IDE使用了自定义的TestRunner(而非unittest默认的TextTestRunner),这个运行器可能没有实现调用startTestRun的逻辑,导致你重写的方法根本没机会被执行。
内容的提问来源于stack exchange,提问作者Reyhaneh Sharifzadeh
相关产品推荐
相关产品推荐

