我编写了一个简单的自动化测试来测试基于 Web 应用程序的登录功能。我对底部的 if 子句和其中的断言 True 语句有疑问。有没有必要?我进行登录检查的目的是通过让它查找我知道在主页上的元素来确认机器人在成功登录后重定向到主屏幕。 loginCheck 是一个布尔值,如果满足预期条件,它将返回 true,所以我真的需要断言 True 一个我已经知道必须为 true 的布尔值吗?
还是我想太多了?
如果有任何关于如何强化我的代码以使调试更容易的建议,我将不胜感激。
def test1(self):
#register and login
driver = self.driver
driver.get("http://localhost:3000")
self.assertIn("React To-Do List with Registration and Login", driver.title)
#try to log in
driver.find_element(By.XPATH, Tags.nameField).send_keys("rogera")
driver.find_element(By.XPATH, Tags.passField).send_keys("cde34rfv")
driver.find_element(By.XPATH, Tags.loginButton).click()
#check for error message
failureCheck = WebDriverWait(driver, 5).until(EC.visibility_of_element_located((By.XPATH, Tags.errorMessage)))
#register if login attempt fails
if failureCheck:
driver.find_element(By.XPATH, Tags.registerButton).click()
time.sleep(3)
driver.find_element(By.XPATH, Tags.firstNameField).send_keys("Roger")
driver.find_element(By.XPATH, Tags.lastNameField).send_keys("Allen")
driver.find_element(By.XPATH, Tags.usernameField).send_keys("rogera")
driver.find_element(By.XPATH, Tags.passwordField).send_keys("cde34rfv")
driver.find_element(By.XPATH, Tags.registerPageButton).click()
time.sleep(3)
successCheck = WebDriverWait(driver, 5).until(EC.visibility_of_element_located((By.XPATH, Tags.successMessage)))
#login after registration
if successCheck:
driver.find_element(By.XPATH, Tags.nameField).send_keys("rogera")
driver.find_element(By.XPATH, Tags.passField).send_keys("cde34rfv")
driver.find_element(By.XPATH, Tags.loginButton).click()
time.sleep(3)
loginCheck = WebDriverWait(driver, 5).until(EC.element_to_be_clickable((By.XPATH, Tags.logoutButton)))
if loginCheck:
assert True
else:
AssertionError("Something went wrong with user registration")
在上面的代码中不需要
assert True
。你问的是正确的。
一般来说。断言用于调试目的,即检查代码是否正常工作。
附加信息: 不仅仅是断言,甚至对于其他错误:当然可以使用
if
语句检查代码,比如 if condition: print('Value Error')
。但在大多数情况下,我们出于可读性目的而使用 try.. except
方法。使用try.. except
将使代码更加结构化且易于理解。