如何为pytest创建一个BaseTest类
如何为pytest创建一个BaseTest类
我正在尝试创建一个将被所有其他测试类继承的类。我似乎对如何进行操作有一些误解,因为当我尝试运行pytest时,它找不到我的测试并抛出一个空套件错误。
这是我现在的代码。请注意,这是使用Selenium进行Web UI测试的代码:
base_test.py:
@pytest.mark.usefixtures('chrome_driver_init') class BaseTest: def __init__(self): self.login_page = LoginPage(self.driver) self.home_page = HomePage(self.driver) self.details_page = DetailsPage(self.driver)
我只想创建这些Web页面对象的实例,以供我的测试类使用
test_login.py:
class TestLogin(BaseTest): def test_login(self): self.login_page.login() assert '登录成功' in self.home_page.welcome_text()
welcome_text()
是一个简单的方法,它查找一个Web元素并返回其文本
最后,只是为了完整起见,我在conftest.py中添加了以下代码:
@pytest.fixture() def chrome_driver_init(request): driver = webdriver.Chrome(options=opts, executable_path=ChromeDriverManager(path=TEST_PATH).install()) request.cls.driver = driver driver.get(URL) driver.maximize_window() yield driver.quit()
我有一种感觉,我的BaseTest需要继承一些pytest类并调用super().__init__()
,但是我找不到任何关于这个类的文档或答案。
有关如何实现这一点的任何想法吗?
编辑:正如MrBean建议的那样,我在BaseTest中的页面对象之前添加了self。然而,结果仍然相同。