如何为pytest创建一个BaseTest类

11 浏览
0 Comments

如何为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。然而,结果仍然相同。

0