Python中unittest的断言方法详解

目录
  • 断言方法:
  • 方法有:
  • 下面是做的例子,后边是运行结果:
  • 总结

断言方法:

是unittest提供的一组方法,可以通过这些方法完成期望结果和实际结果的对比

方法有:

assert+空格+要判断的语句+逗号+'报错语句'        python提供

assertEqual(a,b,msg='报错语句')        若a==b不报错,否则报错内容为msg

assertNotEqual(a,b,msg='报错语句')        若a!=b不报错,否则报错内容为msg

assertIn(a,b,msg='报错语句')        若a in b不报错,否则报错内容为msg

assertNotIn(a,b,msg='报错语句')        若a not in b不报错,否则报错内容为msg

assertTrue(a,msg='报错语句')        a为表达式,若a成立不报错,否则直接报错

assertFalse(a,msg='报错语句')        a为表达式,若a不成立不报错,否则直接报错

assertIsInstance(obj,cls,msg='报错语句')        obj是cls的一个实例,是则不报错,否则直接报错

assertNotIsInstance(obj,cls,msg='报错语句')        obj不是cls的一个实例,不是不报错,否则直接报错

assertIsNone(a,msg='报错语句')       a为None不报错,否则直接报错

assertNotIsNone(a,msg='报错语句')       a不为None不报错,否则直接报错

 下面是做的例子,后边是运行结果:

        运行结果显示:

OK和'.'代表开发和测试的代码无问题

F(FAIL)开发代码有问题,测试代码无问题

E(ERROR)测试代码有问题,开发代码不确定

assert 3 == 5, '错了'	# 错了
assert type(8) is int, '错了'	# 运行成功,不显示结果
assert id(9) is int, '错了'	# 错了
assert type(id(9)) is int, '错了'	# 运行成功,不显示结果
import unittest
class Test(unittest.TestCase):
	def setUp(self):
		print('测试开始')
	def testEqual(self):
		self.assertEqual(10,100,msg = '错了')	# 错了
		self.assertEqual('a','a',msg = '错了')	# OK
		self.assertNotEqual('a','b',msg = '错了')	# OK
		self.assertIn(1,[2,3,4,5],msg = '错了')	# 错了
		self.assertNotIn('a',[2,3,4,5],msg = '错了')	# OK
		self.assertNotIn('a',{'a':1},msg = '错了')	# 错了
		self.assertNotIn(1,{'a':1},msg = '错了')	# OK

		self.assertTrue(6 == 6,msg = '错了')	# OK
		self.assertTrue(bool(3) is False,msg = '错了')	# 错了
		self.assertFalse(bool is False,msg = '错了')	# OK

		class People:
			print('我是人类')
		class Dog:
			print('我是犬类')

		xiaoming = People()
		gouzi = Dog()
		self.assertIsInstance(gouzi,People,msg = '错了')	# 报错
		self.assertNotIsInstance(xiaoming,People,msg = '错了')	# 报错
		self.assertNotIsInstance(bool,int,msg = '错了')	# OK
		self.assertIsInstance(False,int,msg = '错了')	# OK
		self.assertIsInstance(3,bool,msg = '错了')	# 报错

		self.assertIsNone(None,msg = '错了')	# OK
		self.assertIsNone(0,msg = '错了')	# 报错
		self.assertIsNone('',msg = '错了')	# 报错
		self.assertIsNone(None,msg = '错了')	# OK

		def myfum():
			print('我是一个函数')
		self.assertIsNone(myfum,msg = '错了')	# 报错
		self.assertIsNone(myfum(),msg = '错了')	# OK
		self.assertIsNone(print,msg = '错了')	# 报错
		self.assertIsNone(print(),msg = '错了')	# OK
	def tearDown(self):
		print('测试结束')

unittest.main()

总结

到此这篇关于Python中unittest的断言方法详解的文章就介绍到这了,更多相关Python unittest断言内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python unittest单元测试框架及断言方法

    1.单元测试的几个重要概念 (1)Test Case 一个Test Case实例是一个测试用例,完整的测试流程包括测试前准备环境的搭建(setUp).实现测试过程的代码(run).以及 测试后环境的还原(tearDown). (2)Test Suite Test Suite用来组装单个测试用例,可以将多个测试用例集合再一起来执行,通过addTest加载TestCase到TestSuit实例中. (3)Test Runner 执行测试,执行结果.unittest单元测试框架中,通过TextTest

  • Python中unittest的断言方法详解

    目录 断言方法: 方法有: 下面是做的例子,后边是运行结果: 总结 断言方法: 是unittest提供的一组方法,可以通过这些方法完成期望结果和实际结果的对比 方法有: assert+空格+要判断的语句+逗号+'报错语句'        python提供 assertEqual(a,b,msg='报错语句')        若a==b不报错,否则报错内容为msg assertNotEqual(a,b,msg='报错语句')        若a!=b不报错,否则报错内容为msg assertIn(

  • python中torch.nn.identity()方法详解

    目录 先看代码 看源码 应用 总结 先看代码 m = nn.Identity( 54, unused_argument1=0.1, unused_argument2=False ) input = torch.randn(128, 20) output = m(input) >>> print(output.size()) torch.Size([128, 20]) 这是官方文档中给出的代码,很明显,没有什么变化,输入的是torch,输出也是,并且给定的参数似乎并没有起到变化的效果. 看

  • python中使用正则表达式的方法详解

    目录 search(pattern, string, flags=0) findall(pattern, string, flags=0) sub(pattern, repl, string, count=0, flags=0) compile(pattern, flags=0) flags的一些常用值 总结 在python中使用正则表达式,主要通过下面的几个方法 search(pattern, string, flags=0) 扫描整个string并返回匹配pattern的结果(None或对象

  • python中OrderedDict的使用方法详解

    很多人认为python中的字典是无序的,因为它是按照hash来存储的,但是python中有个模块collections(英文,收集.集合),里面自带了一个子类 OrderedDict,实现了对字典对象中元素的排序.请看下面的实例: import collections print "Regular dictionary" d={} d['a']='A' d['b']='B' d['c']='C' for k,v in d.items(): print k,v print "\

  • python中cPickle类使用方法详解

    在python中,一般可以使用pickle类来进行python对象的序列化,而cPickle提供了一个更快速简单的接口,如python文档所说的:"cPickle – A faster pickle". cPickle可以对任意一种类型的python对象进行序列化操作,比如list,dict,甚至是一个类的对象等.而所谓的序列化,我的粗浅的理解就是为了能够完整的保存并能够完全可逆的恢复.在cPickle中,主要有四个函数可以做这一工作,下面使用例子来介绍. 1. dump: 将pyth

  • python中map()函数使用方法详解

    目录 总结 先看map()函数底层封装介绍: 注释中翻译为: map(func, *iterables)--> map对象 创建一个迭代器,使用来自的参数计算函数每个迭代器.当最短的迭代器耗尽时停止. 作用: map(func, lst) ,将传⼊的函数变量 func 作⽤到 lst 变量的每个元素中,并将结果组成新的列表 (Python2)/ 迭代器(Python3) 返回. 注意: map()返回的是一个迭代器,直接打印map()的结果是返回的一个对象. 示例代码1: lst = ['1',

  • python编程之requests在网络请求中添加cookies参数方法详解

    哎,好久没有学习爬虫了,现在想要重新拾起来.发现之前学习爬虫有些粗糙,竟然连requests中添加cookies都没有掌握,惭愧.废话不宜多,直接上内容. 我们平时使用requests获取网络内容很简单,几行代码搞定了,例如: import requests res=requests.get("https://cloud.flyme.cn/browser/index.jsp") print res.content 你没有看错,真的只有三行代码.但是简单归简单,问题还是不少的. 首先,这

  • 对python numpy数组中冒号的使用方法详解

    python中冒号实际上有两个意思:1.默认全部选择:2. 指定范围. 下面看例子 定义数组 X=array([[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16],[17,18,19,20]]) 输出为5x4二维数组 第一种意思,默认全部选择: 如,X[:,0]就是取矩阵X的所有行的第0列的元素,X[:,1] 就是取所有行的第1列的元素 第二种意思,指定范围,注意这里含左不含右 如,X[:, m:n]即取矩阵X的所有行中的的第m到n-1列数据,含左不含右

  • python+requests+unittest API接口测试实例(详解)

    我在网上查找了下接口测试相关的资料,大都重点是以数据驱动的形式,将用例维护在文本或表格中,而没有说明怎么样去生成想要的用例, 问题: 测试接口时,比如参数a,b,c,我要先测a参数,有(不传,为空,整形,浮点,字符串,object,过短,超长,sql注入)这些情况,其中一种情况就是一条用例,同时要保证b,c的正确,确保a的测试不受b,c参数的错误影响 解决思路: 符合接口规范的参数可以手动去填写,或者准备在代码库中.那些不符合规范的参数(不传,为空,整形,浮点,字符串,object,过短,超长,

  • Python中Selenium模块的使用详解

    Selenium的介绍.配置和调用 Selenium(浏览器自动化测试框架) 是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE(7, 8, 9, 10, 11),Firefox,Safari,Google Chrome,Opera等.这个工具的主要功能包括:测试浏览器的兼容性--测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上.测试系统功能--创建回归测试检验软件功能和用户需求.支持自动录制动作和自动生成 .

随机推荐