目标 1. 理解什么是断言 2. 掌握断言assertEqual、assertIn方法 3. 了解UnitTest其他断言方法 1. UnitTest断言 什么是断言? 概念:让程序代替人为判断测试程序执行结果是否符合预期结果的过程 1.2 为什么要学习断言?
自动化脚本在执行的时候一般都是无人值守状态,我们不知道执行结果是否符合预期结果,所以我们需要让 程序代替人 为检测程序执行的结果是否符合预期结果,这就需要使用断言。 1.3 UnitTest断言方法 说明: 1. UnitTest中提供了非常丰富的断言方法,请参考附件资料 2. 复杂的断言方法在自动化测试中几乎使用不到,所以我们只需要掌握几个常用的即可 2. 常用的UnitTest断言方法
序号 | | | | assertTrue(expr, msg=None) | 验证expr是true,如果为false,则fail | | assertFalse(expr, msg=None) | 验证expr是false,如果为true,则fail | | assertEqual(expected, actual, msg=None) | 验证expected==actual,不等则fail 【掌握】 |
| assertNotEqual(first, second, msg=None) | 验证first != second, 相等则fail | | assertIsNone(obj, msg=None) | | | assertIsNotNone(obj, msg=None) | | | assertIn(member, container, msg=None) | 验证是否member in container【掌握】 | | assertNotIn(member, container, msg=None) | 验证是否member not in container |
2.1 使用方式断言方法已经在unittest.TestCase类中定义好了,而且我们自定义的测试类已经继承了 TestCase,所以在测试方法中直接调用即可。 [AppleScript] 纯文本查看 复制代码 import unittest
def add(x, y): return x + y
class TestAssert(unittest.TestCase):
def test01(self): num = add(1, 2)
self.assertEqual(3, num)
def test02(self): num = add(1, 2) is_ok = num == 3
self.assertTrue(is_ok) 3. 案例 [AppleScript] 纯文本查看 复制代码 需求:使用UnitTest框架对tpshop项目测试
1).点击登录,进入登录页面
2).输入用户名和密码,不输入验证码,直接点击登录按钮
3).获取错误提示信息
4).断言错误提示信息是否为“验证码不能为空!”,如果断言失败则保存截图
扩展:
1.图片名称为动态-时间 断言主要代码 [AppleScript] 纯文本查看 复制代码 # 获取错误提示信息
msg = self.driver.find_element_by_css_selector(".layui-layer-content").text print("msg=", msg)
try:
# 断 言
self.assertIn("验证码不能为空", msg)
except AssertionError as e:
# 保存截图
img_path = "./imgs/img{}.png".format(time.strftime("%Y%m%d-%H%M%S")) self.driver.get_screenshot_as_file(img_path)
raise e file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml5196\wps9.png案例代码 [AppleScript] 纯文本查看 复制代码 import time import unittest
from selenium import webdriver class TestLogin(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Firefox() self.driver.get("http://localhost") self.driver.implicitly_wait(10) self.driver.maximize_window()
def test_login(self):
# 点击登录按钮
self.driver.find_element_by_link_text("登录").click()
# 输入用户名
self.driver.find_element_by_id("username").send_keys("13012345678") # 输入密码self.driver.find_element_by_id("password").send_keys("123456")
# 点击登录按钮
self.driver.find_element_by_css_selector("[name='sbtbutton']").click()
# 获取错误提示信息
msg = self.driver.find_element_by_css_selector(".layui-layer-content").text print("msg=", msg)
try:
# 断 言
self.assertIn("验证码不能为空", msg)
except AssertionError as e: # 保存截图
img_path = "./imgs/img{}.png".format(time.strftime("%Y%m%d-%H%M%S")) self.driver.get_screenshot_as_file(img_path)
raise e
def tearDown(self): self.driver.quit()
if name == ' main ': unittest.main() 4. 断言总结 1. 什么是断言? 2. 需要掌握哪个断言? 3. 断言异常类?
|