在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中的断言了解,具体的大家要动手去操作,俗话说熟能生巧,在那个场景下需要用到什么样的断言方便,这个都是需要自己一点点的操作后总结出来的

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

unittest---unittest断言的更多相关文章

  1. 3.7 unittest之断言

    3.7 unittest之断言 前言在测试用例中,执行完测试用例后,最后一步是判断测试结果是pass还是fail,自动化测试脚本里面一般把这种生成测试结果的方法称为断言(assert).用unitte ...

  2. Python单元测试框架unittest之断言(assert)

    unittest中断言主要有三种类型: 1.基本的布尔断言,即:要么正确,要么错误的验证 2.比较断言,如比较两个变量的值(跟上面的布尔断言区别不大,主要是通过比较两个变量的值得出布尔值) 3.复杂断 ...

  3. Appium+python的单元测试框架unittest(4)——断言(转)

    (原文:https://www.cnblogs.com/fancy0158/p/10051576.html) 在我们编写的测试用例中,测试步骤和预期结果是必不可少的.当我们运行测试用例时,得到一个运行 ...

  4. unittest之断言

    在测试用例中,执行完测试用例后,最后一步是判断测试结果是 pass 还是fail,自动化测试脚本里面一般把这种生成测试结果的方法称为断言(assert).用 unittest 组件测试用例的时候,断言 ...

  5. python unittest之断言及示例

    python unintest单元测试框架提供了一整套内置的断言方法. 如果断言失败,则抛出一个AssertionError,并标识该测试为失败状态 如果异常,则当做错误来处理 注意:以上两种方式的区 ...

  6. python+unittest框架第四天unittest之断言(一)

    unittest中的测试断言分两天总结,hhh其实内容不多,就是懒~ 断言的作用是什么?  答:设置测试断言以后,能帮助我们判断测试用例执行结果. 我们先看下unittest支持的断言有哪些: 对上面 ...

  7. unittest assert断言

    unittest常用的断言方法 1.assertEqual(self, first, second, msg=None) --判断两个参数相等:first == second 2.assertNotE ...

  8. unittest 常用断言

    1 assertEqual(a,b)  判断a==b 2 assertNotEqual(a,b) 判断a !=b 3 assertTrue(x)  bool (x) is True 4 assertF ...

  9. 其他类想使用unittest的断言方法,就import unittest的框架,继承他,使用他里面的方法

    在断言层 也可以同样用这个方法

  10. 测开之路五十六:实现类似unittest的断言

    import inspect class Case(object): """ 实现断言 """ def __init__(self): se ...

随机推荐

  1. 每个pool pg数计算

    ceph PGs per Pool Calculator 原文档:http://xiaqunfeng.cc/2017/09/18/ceph-PGs-per-Pool-Calculator/ 2017- ...

  2. ARTS-S C语言多线程传参数

    #include <stdio.h> #include <stdlib.h> #include <pthread.h> #include <unistd.h& ...

  3. socket AcceptAsync方法的使用

    AcceptAsync与Accept很大的不一样 Accept是一个同步 阻塞的已经封装好底层的方法 AcceptAsync是一个异步 非阻塞未封装的底层连接入口,需要手动填入连接代码用于优化sock ...

  4. 【Redis】349- Redis 入门指南

    点击上方"前端自习课"关注,学习起来~ 1. 概述 1.1. Redis 简介 Redis 是速度非常快的非关系型(NoSQL)内存键值数据库,可以存储键和五种不同类型的值之间的映 ...

  5. 04Shell流程控制

    流程控制 if 单分支结构 if 条件测试 then 命令序列 fi 双分支结构 if 条件测试 then 命令序列 else 命令序列 fi 多分支结构 if 条件测试 1 then 命令序列 [e ...

  6. .NET Core环境变量和用户秘钥实现开发中的数据安全

    目录 一.注入 IConfiguration 二.从配置文件 appsettings.json 中获取环境变量 三.从项目中获取环境变量 四.用户秘钥设置环境变量 前言:有很多人将秘钥,数据库连接字符 ...

  7. 千呼万唤始出来——uFUN开发板2.0开箱评测

    前言 今年3月,我参与了面包板社区组织的第一批uFUN开发板评测活动,并有幸能获得试用机会,那是我第一次了解到uFUN这个项目及背后的故事,4月份,uFUN 2.0版本来了,收到了张工送的一块样板,后 ...

  8. [ASP.NET Core 3框架揭秘] 依赖注入[2]:IoC模式

    正如我们在<依赖注入:控制反转>提到过的,很多人将IoC理解为一种"面向对象的设计模式",实际上IoC不仅与面向对象没有必然的联系,它自身甚至算不上是一种设计模式.一般 ...

  9. NPOI 设置下拉列表

    HSSFWorkbook workbook = new HSSFWorkbook();//创建工作簿 ISheet sheet = workbook.CreateSheet();//创建sheet页 ...

  10. vue 中 px转vw的用法

    下面介绍最简单的用法 1 下载依赖 npm install postcss-import postcss-loader postcss-px-to-viewport --save-dev 2 在项目根 ...