【发布时间】:2019-10-26 15:07:40
【问题描述】:
我正在尝试创建一个会话范围的固定装置,它为我的套件中的每个测试类创建和传递驱动程序类的实例。我期待以下代码可以工作:
import pytest
from pages.home.home_page import HomeAdmin
from base.webdriver_factory import WebDriverFactory
@pytest.fixture(scope='session', autouse=True)
def startup(request):
print("SESSION SET UP")
wdf = WebDriverFactory("firefox")
driver = wdf.get_web_driver_instance() # returns driver instance
return driver
我希望能够从我的测试代码中访问驱动程序实例:
from pages.home.home_page import HomeAdmin
import unittest
import pytest
@pytest.mark.usefixtures("startup")
class HomeAdminTest(unittest.TestCase):
@pytest.fixture(autouse=True)
def setup(self, startup):
print("TEST")
self.ha = HomeAdmin(self.driver)
def test_login(self):
print("test run")
买这个会报错:
@pytest.fixture(autouse=True)
def setup(self, startup):
print("TEST")
> self.ha = HomeAdmin(self.driver)
E AttributeError: 'HomeAdminTest' object has no attribute 'driver'
testcases\home\home_test.py:11: AttributeError
我一般要达到的目标: 对于所有测试(所有类和模块)只打开一次浏览器,然后运行各种其他类以使用相同的驱动程序实例进行操作。 (我知道这不是测试的最佳实践,但这是特殊情况,我宁愿自动化一些流程而不是进行真正的测试)。
提前谢谢你,
沃伊切赫
【问题讨论】:
标签: selenium scope pytest fixtures