在unittest单元测试中也提供了断言的方式,通过断言判断用例有没有成功。

unittest常用断言

unittest框架的TestCase类提供以下方法用于测试结果的判断

方法 检查
assertEqual(a, b) a ==b
assertNotEqual(a, b) a !=b
assertTrue(x) bool(x) is True
assertFalse(x) Bool(x) is False
assertIs(a, b) a is b
assertIsNot(a, b) a is not b
assertIsNone(x) x is None
assertIsNotNone(x) x is not None
assertIn(a, b) a in b
assertNotIn(a, b) a not in b
assertIsInstance(a, b) isinstance(a,b)
assertNotIsInstance(a, b) not isinstance(a,b)

举例说明

列举了上面的方法其中3个,然后观察可以看出来其中前2条用例断言是正确的,但是最后一个是断言失败的用例

# coding:utf-8
import unittest class Test(unittest.TestCase):
def test01(self):
'''
判断 a = b
'''
a = ''
b = ''
self.assertEqual(a,b) def test02(self):
'''
a 存在 b 之中
'''
a = '安静'
b = '测试-安静'
self.assertIn(a,b) def test03(self):
'''
失败用例
'''
a = '安静'
b = '测试-安静'
self.assertNotIn(a,b) if __name__ == '__main__':
unittest.main()

通过执行后我们看下结果提示2个通过,1个是失败的,失败的原因也打印出来了

有的小伙伴们肯定会说,这个报错看不懂,那么能有更清楚的报错吗?当然了。unittest这里提供了我们自己进行设置报错信息

自定义报错信息

我们直接在断言的后面添加想要的报错信息

def test03(self):
'''
失败用例
'''
a = '安静'
b = '测试-安静'
self.assertNotIn(a,b,msg='报错原因,%s没有包含%s'%(a,b))

通过执行后,我们在看下报错的信息,这次就很明错了。

小试牛刀

看了上面的内容大家都会了,但是不动手做一做怎么知道自己到底会不会呢?前面安静也写了关于requests的一些内容,我们就通过request+unittest完成我们的简单接口自动化

接口信息

接口:https://api.apiopen.top/searchMusic

参数:name:歌曲名称

按照上面的接口信息,简单的写了几个用例。可能有的小伙伴们就怕执行后报错,那我们就通过try把错误异常捕捉。(这里没有具体的完善代码格式哈)

这里接口返回的内容可以通过json格式转换,让我们更加清楚的去寻找我们想要的数据

# coding:utf-8
import unittest
import requests
class Music(unittest.TestCase):
def test01(self): url = 'https://api.apiopen.top/searchMusic'
data = {
"name":"断桥残雪"
}
r = requests.post(url,data=data)
b = r.json()['result'][0]['title']
a = '断桥残雪'
self.assertEqual(a,b)
print('第一个用例通过') def test02(self): url = 'https://api.apiopen.top/searchMusic'
data = {
"name":"说好不哭"
}
r = requests.post(url,data=data)
a = '周杰伦'
b = r.text
self.assertIn(a,b)
print('第二个用例通过') def test03(self): url = 'https://api.apiopen.top/searchMusic'
data = {
"name":"芒种"
}
r = requests.post(url,data=data)
a = '抖音'
b = r.text
try:
self.assertIn(a,b,msg='\n抖音不存在芒种歌曲信息中')
except Exception as msg:
print('错误信息%s'%msg)
print('第三个用例失败')
if __name__ == '__main__':
unittest.main()

话不多说,我们直接执行。可以看到前面2个已经全部通过了,但是最后一个用例失败了,失败的原因也打印出来了。

我们会发现上面的代码有很多重复的地方,大家可以尝试解决代码重复性的问题哈,

通过简单的例子完成了对unittest中的断言了解,具体的大家要动手去操作,俗话说熟能生巧,在那个场景下需要用到什么样的断言方便,这个都是需要自己一点点的操作后总结出来的

如果感觉安静写的对您有帮助的话,右下角可以点个关注,哪里有写错的地方或者不懂的地方可以下方留言,看到后第一时间回复~~~

最新文章

  1. HTML基础篇之HTML基本元素
  2. js基础之BOM
  3. Java中使用验证码和二维码
  4. [置顶] myEclipse8.5或者eclipse手工安装jd插件(myEclipse8.5或eclipse内直接查看.class文件,jd反编译工具)
  5. 深入理解urllib、urllib2及requests
  6. VC 2005 解决方案的目录结构设置和管理
  7. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(15)-用户登录详细错误和权限数据库模型设计
  8. 自定义仿 QQ 健康计步器进度条
  9. 关于Mybatis的java.lang.UnsupportedOperationException异常处理
  10. [SHOI2008]循环的债务
  11. SpringBoot JMS(ActiveMQ) 使用实践
  12. noi.ac89A 电梯
  13. [LeetCode] Letter Case Permutation 字母大小写全排列
  14. C# 实现邮件收取发送功能
  15. RibbonControl中的主题设计
  16. Sub-process /usr/bin/dpkg returned an error code (1)解决方法
  17. 同一客户端使用多份SSH Key
  18. iptables规则绑定在port而不是拦截在协议栈
  19. hadoop错误:Does not contain a valid host:port authority
  20. Axure RP 的安装与卸载

热门文章

  1. LRU算法与增强
  2. Django之视图层与模板层
  3. 新手如何快速入门node.js
  4. WebGPU学习系列目录
  5. d3.js 入门指南 - 仪表盘
  6. OpenWrite一款博客可一文多发的实用工具
  7. C#界面设计相关设置
  8. 服务发现(consul)搭建
  9. 【代码审计】ESPCMSP8(易思企业建站管理系统)漏洞报告
  10. 精通awk系列(16):gawk支持的正则表达式