A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 我是楠楠 黑马粉丝团   /  2019-9-19 11:54  /  711 人查看  /  0 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

【郑州校区】断言
目标
1. 理解什么是断言
2. 掌握断言assertEqual、assertIn方法
3. 了解UnitTest其他断言方法
1. UnitTest断言
什么是断言?
概念:让程序代替人为判断测试程序执行结果是否符合预期结果的过程
1.2 为什么要学习断言?

自动化脚本在执行的时候一般都是无人值守状态,我们不知道执行结果是否符合预期结果,所以我们需要让      程序代替人
为检测程序执行的结果是否符合预期结果,这就需要使用断言。
1.3 UnitTest断言方法
说明:
1. UnitTest中提供了非常丰富的断言方法,请参考附件资料
2. 复杂的断言方法在自动化测试中几乎使用不到,所以我们只需要掌握几个常用的即可
2. 常用的UnitTest断言方法

序号
断言方法
断言描述
1
assertTrue(expr, msg=None)
验证expr是true,如果为false,则fail
2
assertFalse(expr, msg=None)
验证expr是false,如果为true,则fail

3
assertEqual(expected, actual, msg=None)
验证expected==actual,不等则fail 【掌握】


4
assertNotEqual(first, second, msg=None)
验证first != second, 相等则fail
5
assertIsNone(obj, msg=None)
验证obj是None,不是则fail
6
assertIsNotNone(obj, msg=None)
验证obj不是None,是则fail

7
assertIn(member, container, msg=None)
验证是否member in container【掌握】

8
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. 断言异常类?

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马