我是Selenium世界的初学者。我只是试图使用Pytest自动化我的web应用程序。但是,我不知道如何使用多个数据检查登录功能如;我必须使用
检查登录功能- 有效邮箱,有效密码
- 无效的email,无效的密码
- 有效的email,无效的密码
- 那些没有注册到我们服务的邮件所有这些条件。这怎么可能呢?我研究了一下,发现夹具参数化。但不知道如何正确使用它。我已经写了一个简单的测试登录使用有效的用户名和密码。它工作得很好。但我必须尝试登录多个测试场景以及。有人能帮我一下吗?
这是我的代码conftest.py
@pytest.fixture(params=["chrome"],scope='class')
def setup(request):
chrome_driver = webdriver.Chrome(TestData.CHROME_EXECUTABLE_PATH)
chrome_driver.maximize_window()
request.cls.driver = chrome_driver
chrome_driver.implicitly_wait(10)
chrome_driver.get(TestData.BASIC_URL)
yield
chrome_driver.close()
下面是test_login.py的代码
class TestLogin(BaseTest):
LOGIN_LINK = (By.XPATH, "//a[text()='Log In']")
USERNAME_TXT = (By.ID, "login-email")
PASSWORD_TXT = (By.NAME, "password")
LOGIN_BUTTON = (By.CSS_SELECTOR, "button[value='Log In']")
def do_click(self, locator):
WebDriverWait(self.driver, 20).until(EC.element_to_be_clickable(locator)).click()
def do_send_keys(self, locator, text):
WebDriverWait(self.driver, 20).until(EC.visibility_of_element_located(locator)).send_keys(text)
def test_login_credentials(self):
self.do_click(self.LOGIN_LINK)
self.do_send_keys(self.USERNAME_TXT,TestData.REGISTERED_USERNAME_CRED)
self.do_send_keys(self.PASSWORD_TXT,TestData.REGISTERED_PASSWORD_CRED)
self.do_click(self.LOGIN_BUTTON)
假设您的驱动程序和测试类正常工作,您可以使用@pytest.mark。参数化以在不同条件下运行相同的测试方法。对于login
场景,它类似于:
@pytest.mark.parametrize(
"user, pass",
[("valid_user@gmail.com", "12345678"), ("invalid_user@gmail.com", "00000000")],
)
def test_login_credentials(self, user, pass):
self.do_click(self.LOGIN_LINK)
self.do_send_keys(self.USERNAME_TXT, user)
self.do_send_keys(self.PASSWORD_TXT, pass)
self.do_click(self.LOGIN_BUTTON)