如何通过参数化初始化Webdriver

时间:2019-06-07 12:57:26

标签: python-3.x pytest parametrized-testing

我是pytest的新手,可能我不太了解参数设置。 我的目标是在运行测试时通过浏览器名称,以告诉pytest我要使用哪个webdriver。

这是我的代码:

conftest.py

def pytest_addoption(parser):
    parser.addoption("--browser", action="store", default="chrome")

webdriver.py

@pytest.fixture(params=["chrome", "firefox", "safari"])
def whichDriver(request):
    browser_list = request.config.getoption("--browser")
    driver_map = {
        "chrome": webdriver.Chrome(),
        "firefox": webdriver.Firefox(),
        "safari": webdriver.Safari()
    }
    if request.param in browser_list:
        driver = driver_map[request.param]
        return driver
    else:
        pytest.skip("Not running tests")

class Driver:

    def __init__(self):
        self.instance = whichDriver

    def navigate(self, url):
        if isinstance(url, str):
            self.instance.get(url)
        else:
            raise TypeError("URL should be a string.")


test_login.py

class TestLogin(unittest.TestCase):

    def setUp(self):
        self.driver = Driver()
        self.driver.navigate(constants.login_url)

    def test_login(self):
        login_screen = LoginScreen(self.driver)
        login_screen.log_in(user_name=constants.my_login, user_password=constants.my_password)

    def tearDown(self):
        self.driver.instance.quit()


我跑步时:

pytest --browser=firefox TC/test_login.py 

我得到:

 AttributeError: 'function' object has no attribute 'get'

0 个答案:

没有答案