selenium中断言失败的用例测试结果为PASS

最近开始学习用python使用selenium写前端自动化用例,过程中遇到一个问题。

使用断言设置检查点,断言失败了,但是用例结果为PASS。原来的代码结构如下:

def test_Create_Role(self):

   self.driver.get(URL)
   try:
      # 创建角色
      self.driver.find_element_by_xpath('//input[@name="roleName"]').send_keys(self.ROLE_NAME)
      self.driver.find_element_by_xpath('//textarea[@name="description"]').send_keys("Selenium auto create.")
      self.wait.until(
         EC.visibility_of_element_located(
            (By.XPATH, '//button[text()="创建角色"]'))
      ).click()
      is_element_exist = Is_Element_Exist(self.driver, By.XPATH,
                              '//span[contains(text(), "已创建")]').is_element_Exist_Wait()
      logger.info("Create role status is %s" % is_element_exist)
      self.assertTrue(is_element_exist == True, "Create role failed")
   except Exception as e:
      logger.error(e)

其中调用了一个自定义类的函数:is_element_Exist_Wait,而后用assertTrue设置检查点。测试时修改了元素定位的字符串,使检查结果失败。查看到assert与预期相符。但是使用HTMLTestRunner查看到结果为pass.

原来是因为我把断言语句放到了try语句下面,导致被except中定义的异常类捕获,最后运行完就没有异常了。

修改后的代码就没有问题了:

def test_Create_Role(self):
    self.driver.get(URL)

	self.driver.find_element_by_xpath('//input[@name="roleName"]').send_keys(self.ROLE_NAME)
	self.driver.find_element_by_xpath('//textarea[@name="description"]').send_keys("Selenium auto create.")
	self.wait.until(
	    EC.visibility_of_element_located(
		(By.XPATH, '//button[text()="创建角色"]'))
		).click()
	is_element_exist = Is_Element_Exist(self.driver, By.XPATH,
	    '//span[contains(text(), "已创建")]').is_element_Exist_Wait()
	logger.info("Create role status is %s" % is_element_exist)
	self.assertTrue(is_element_exist == True, "Create role failed")

看来不能把断言放到try语句中并且是可以被except的异常类包含的,否则就不能通过断言来设置测试用例的结果。

猜你喜欢

转载自blog.csdn.net/m0_37944592/article/details/82019749
今日推荐