我试图使用页面对象模型来设计模式,用pytest和Selenium创建一个测试套件。为了在测试中使用页面类,我只是将它们导入到TestClass__init__
方法中,因为它们需要用一个驱动程序实例化。在
我知道,默认情况下,pytest使用__init__
方法忽略类。我还知道,通过阅读here可以配置pytest收集测试的位置。是否也可以考虑使用__init__
进行类测试,而不是返回“空套件”错误?在
@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)
Pytest和Unittest有一些不同的约定。在同一个测试函数中混合使用这两个函数通常是值得避免的。在
如果您专门使用Pytest,您将把fixture作为参数传递给测试函数,例如:
您还没有包括所有的对象定义/导入,所以很难看到您试图通过测试完成什么,但希望这能让您了解pytest约定。在
相关问题 更多 >
编程相关推荐