我是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'