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

如何为pytest创建可继承的BaseTest基类,解决运行时空套件报错问题

问题根因

你遇到的Empty suite报错核心有两个问题:

  • 测试基类BaseTest自定义了__init__构造方法,pytest实例化测试类时默认不会传入任何参数,会直接导致类实例化失败,pytest就会忽略整个测试类,最终识别不到任何用例
  • 就算绕过了实例化问题,__init__执行时chrome_driver_init fixture还没运行,self.driver还未被注入,初始化页面对象时也会报属性不存在的错误

解决方法

把BaseTest里的__init__替换为pytest自带的setup_method方法即可,该方法会在每个测试用例执行前、fixture注入完成后自动运行,此时self.driver已经被成功赋值,可以正常初始化页面对象。

修改后的base_test.py代码:

import pytest
# 补充你自己的页面对象导入路径
from xxx import LoginPage, HomePage, DetailsPage

@pytest.mark.usefixtures('chrome_driver_init')
class BaseTest:
    def setup_method(self):
        self.login_page = LoginPage(self.driver)
        self.home_page = HomePage(self.driver)
        self.details_page = DetailsPage(self.driver)

test_login.py和conftest.py无需任何修改,直接运行pytest即可正常识别到测试用例。


额外注意事项
  • pytest的所有测试类(包括基类)都禁止自定义构造方法,所有初始化逻辑请通过setup_method(每个用例前执行)/setup_class(整个测试类仅执行一次)或者fixture实现
  • 确认测试文件命名符合test_*.py或*_test.py规则,测试类中的用例方法命名符合test_*规则,你当前提供的命名符合要求无需调整

内容的提问来源于stack exchange,提问作者cdub

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 19:24:01