python接口自动化(二十三)--unittest断言——上(详解)

简介: 在测试用例中,执行完测试用例后,最后一步是判断测试结果是 pass 还是 fail,自动化测试脚本里面一般把这种生成测试结果的方法称为断言(assert)。用 unittest 组件测试用例的时候,断言的方法还是很多的,下面介绍几种常用的断言方法:assertEqual、assertIn、assertTrue。想了解更多可以点击 传送门 看一下最后的小结有大致介绍。

简介


  

在测试用例中,执行完测试用例后,最后一步是判断测试结果是 pass 还是 fail,自动化测试脚本里面一般把这种生成测试结果的方法称为断言(assert)。用 unittest 组件测试用例的时候,断言的方法还是很多的,下面介绍几种常用的断言方法:assertEqual、assertIn、assertTrue。想了解更多可以点击 传送门 看一下最后的小结有大致介绍。


unittest断言计划是分上、中、下三篇有简单到复杂的给小伙伴们介绍一下,填补一下这部分的空白。


基本断言方法



基本的断言方法提供了测试结果是True还是False。所有的断言方法都有一个msg参数,如果指定msg参数的值,则将该信息作为失败的错误信息返回。


序号 断言方法 断言描述
1 assertEqual(arg1, arg2, msg=None) 验证arg1=arg2,不等则fail
2 assertNotEqual(arg1, arg2, msg=None) 验证arg1 != arg2, 相等则fail
3 assertTrue(expr, msg=None) 验证expr是true,如果为false,则fail
4 assertFalse(expr,msg=None) 验证expr是false,如果为true,则fail
5 assertIs(arg1, arg2, msg=None) 验证arg1、arg2是同一个对象,不是则fail
6 assertIsNot(arg1, arg2, msg=None) 验证arg1、arg2不是同一个对象,是则fail
7 assertIsNone(expr, msg=None) 验证expr是None,不是则fail
8 assertIsNotNone(expr, msg=None) 验证expr不是None,是则fail
9 assertIn(arg1, arg2, msg=None) 验证arg1是arg2的子串,不是则fail
10 assertNotIn(arg1, arg2, msg=None) 验证arg1不是arg2的子串,是则fail
11 assertIsInstance(obj, cls, msg=None) 验证obj是cls的实例,不是则fail
12 assertNotIsInstance(obj, cls, msg=None) 验证obj不是cls的实例,是则fail


简单的case



1、实例,写了四个测试用例,其中第四个是失败的


1232840-20190425094035734-758759196.png


2、运行结果(python3)

1232840-20190425094004331-501418205.png


python2


1232840-20190425152302748-26245934.png


3、在python2中执行的结果,中文编码不对,没正常显示中文,遇到这种情况,可以自定义异常输出,python3正常。有时候也可以根据实际需要采用自定义异常输出,要灵活掌握。


参考代码



 # coding=utf-8
  #1.先设置编码,utf-8可支持中英文,如上,一般放在第一行
  #2.注释:包括记录创建时间,创建人,项目名称。
  '''
  Created on 2019-4-25
  @author: 北京-宏哥
  Project:学习和使用unittest框架编写断言
  '''
 #3.导入unittest模块
 import unittest
 #4.编写测试用例和断言
 class Test(unittest.TestCase):
     def test01(self):
         '''判断 a == b '''
         a = 1
         b = 1
         self.assertEqual(a, b)
     def test02(self):
         '''判断 a in b '''
         a = "hello hongge"
         b = "hello hongge and world!"
         self.assertIn(a, b)
     def test03(self):
         '''判断 a is True '''
         a = True
         self.assertTrue(a)
     def test04(self):
         '''失败案例'''
         a = "北京-宏哥"
         b = "hongge"
         self.assertEqual(a, b)
 if __name__ == "__main__":
     unittest.main()


自定义异常输出



1、以 assertEqual 为例分析,在pycharm中通过ctrl(command)+🖱️左键我们可以定位到方法的位置:

python3


1232840-20190425135159452-1599240793.png


python2


1232840-20190425152349327-676285006.png


2、python2翻译:如果两个对象不能相等,就返回失败,相当于 return: first==second

   

python3如果你断言的 语句正确 则什么反应都没有,但是如果你出错之后 就会报出    AssertionError 并且错误可以自己填写。


3、这里除了相比较的两个参数 first 和 second,还有第三个参数 msg=None,这个 msg 参数就是遇到异常后自定义输出信息


1232840-20190425152903796-1149254712.png


4、参考代码

# coding=utf-8
#1.先设置编码,utf-8可支持中英文,如上,一般放在第一行
#2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2019-4-25
@author: 北京-宏哥
Project:学习和使用unittest框架编写断言
'''
#3.导入unittest模块
import unittest
#4.编写测试用例和断言
class Test(unittest.TestCase):
    def test01(self):
        '''判断 a == b '''
        a = 1
        b = 1
        self.assertEqual(a, b)
    def test02(self):
        '''判断 a in b '''
        a = "hello hongge"
        b = "hello hongge and world!"
        self.assertIn(a, b)
    def test03(self):
        '''判断 a is True '''
        a = True
        self.assertTrue(a)
    def test04(self):
        '''失败案例'''
        a = "北京-宏哥"
        b = "hongge"
        self.assertEqual(a, b,msg='失败原因: %s!=%s'%(a,b))
if __name__ == "__main__":
    unittest.main()


小结


  

unittest断言开篇就介绍这里,另外大家也不要纠结python2或者python3,建议小伙伴们使用python3,因为python2到2020年官方就好像不会维护了!!!

相关文章
|
1月前
|
JSON API 数据安全/隐私保护
Python采集淘宝拍立淘按图搜索API接口及JSON数据返回全流程指南
通过以上流程,可实现淘宝拍立淘按图搜索的完整调用链路,并获取结构化的JSON商品数据,支撑电商比价、智能推荐等业务场景。
|
2月前
|
缓存 监控 算法
item_get - Lazada 商品详情详情接口深度分析及 Python 实现
Lazada商品详情接口item_get可获取商品全维度数据,包括价格、库存、SKU、促销及卖家信息,支持东南亚六国站点,适用于竞品监控、定价策略与市场分析,助力跨境卖家精准决策。
|
2月前
|
JSON 监控 数据格式
1688 item_search_app 关键字搜索商品接口深度分析及 Python 实现
1688开放平台item_search_app接口专为移动端优化,支持关键词搜索、多维度筛选与排序,可获取商品详情及供应商信息,适用于货源采集、价格监控与竞品分析,助力采购决策。
|
2月前
|
缓存 供应链 监控
VVIC seller_search 排行榜搜索接口深度分析及 Python 实现
VVIC搜款网seller_search接口提供服装批发市场的商品及商家排行榜数据,涵盖热销榜、销量排名、类目趋势等,支持多维度筛选与数据分析,助力选品决策、竞品分析与市场预测,为服装供应链提供有力数据支撑。
|
2月前
|
缓存 监控 算法
唯品会item_search - 按关键字搜索 VIP 商品接口深度分析及 Python 实现
唯品会item_search接口支持通过关键词、分类、价格等条件检索商品,广泛应用于电商数据分析、竞品监控与市场调研。结合Python可实现搜索、分析、可视化及数据导出,助力精准决策。
|
24天前
|
存储 数据采集 监控
Python定时爬取新闻网站头条:从零到一的自动化实践
在信息爆炸时代,本文教你用Python定时爬取腾讯新闻头条,实现自动化监控。涵盖请求、解析、存储、去重、代理及异常通知,助你构建高效新闻采集系统,适用于金融、电商、媒体等场景。(238字)
221 2
|
2月前
|
缓存 监控 算法
苏宁item_get - 获得商品详情接口深度# 深度分析及 Python 实现
苏宁易购item_get接口可实时获取商品价格、库存、促销等详情,支持电商数据分析与竞品监控。需认证接入,遵守调用限制,适用于价格监控、销售分析等场景,助力精准营销决策。(238字)
|
2月前
|
监控 算法 数据安全/隐私保护
唯品会 item_get - 获得 VIP 商品详情接口深度分析及 Python 实现
唯品会item_get接口通过商品ID获取商品详情,支持价格、库存、促销等数据抓取,适用于电商分析、竞品监控与价格追踪,结合Python实现可高效完成数据获取、分析与可视化,助力精准营销决策。

推荐镜像

更多