【发布时间】:2019-05-29 20:59:40
【问题描述】:
我正在尝试使用 pytest 和 Selenium 创建一个测试套件,使用页面对象模型进行模式设计。为了在我的测试中使用我的页面类,我只是将它们导入到我的 TestClass __init__ 方法中,因为它们需要使用驱动程序进行实例化。
我知道,默认情况下,pytest 会忽略具有__init__ 方法的类。我也知道,通过阅读here,可以配置 pytest 收集测试的位置。是否也可以考虑使用__init__ 进行类测试,而不是返回“Empty Suite”错误?
@pytest.fixture(scope="session")
def driver_init(request):
from selenium import webdriver
driver = webdriver.Chrome()
session = request.node
page = PageFunctions(driver)
login_page = LoginPage(driver)
registration_page = RegistrationPage(driver)
for item in session.items:
cls = item.getparent(pytest.Class)
setattr(cls.obj, "driver", driver)
setattr(cls.obj, "page", page)
setattr(cls.obj, "login", login_page)
setattr(cls.obj, "registration", registration_page)
【问题讨论】:
-
你能提供一个你的来源的例子吗?
-
我实际上通过绕过需要
__init__方法并使用我的 driver_init pytest 夹具来启动我需要的东西来管理一个解决方法。作为参考,这是我最终用来启动我需要的类并将它们用作我的测试类中的类属性的代码