You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 02:55:24