Pytest收集阶段执行Electron应用测试而非仅收集的问题求助
问题解决:Pytest收集阶段执行测试用例的问题
问题根源
你在测试模块的顶级作用域直接执行了测试类的实例化和方法调用:
test3 = Test() test3.test()
Pytest在收集测试用例时会自动导入所有测试模块,模块中顶级作用域的代码会被立即执行,这就导致你的测试在收集阶段就跑起来了,而非等到测试运行阶段。
解决方案
1. 将直接调用代码放到if __name__ == "__main__"块中
修改测试模块的执行代码,仅当直接运行该模块时才执行测试,Pytest收集时不会触发这部分逻辑:
class Test(): def test(self): wait, autho, driver = initialSetup(self) # 仅在直接运行模块时执行测试 if __name__ == "__main__": test3 = Test() test3.test()
2. 遵循Pytest测试命名规范(可选但推荐)
Pytest默认识别以test_开头的测试方法和以Test开头的测试类(不含__init__方法),建议调整测试方法命名,让结构更清晰:
class TestLoyaltyPurchase(): def test_dine_in_with_slider(self): wait, autho, driver = initialSetup(self)
3. 控制初始化逻辑的执行时机
如果initialSetup包含启动Electron应用、初始化Chromedriver等操作,确保这些逻辑只在测试方法内部执行,不要放在类的__init__方法或模块顶级作用域中,避免收集阶段提前触发资源初始化。
内容的提问来源于stack exchange,提问作者Freejack67
相关产品推荐
相关产品推荐

