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断言内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

时间: 2022-01-13

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单元测试框架实现参数化

当我们在使用TestNG时,发现它有一个非常好用的参数化功能.当你的测试用例有固定的参数和断言结果时,它可以相似用例的节省用例的个数. 例子如下: import static org.testng.Assert.assertEquals; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; /** * Created by fnngj on 2017/3/19. */ public cla

Python unittest单元测试框架总结

什么是单元测试 单元测试是用来对一个模块.一个函数或者一个类来进行正确性检验的测试工作. 比如对于函数abs(),我们可以编写的测试用例为: (1)输入正数,比如1.1.2.0.99,期待返回值与输入相同 (2)输入复数,比如-1.-1.2.-0.99,期待返回值与输入相反 (3)输入0,期待返回0 (4)输入非数值类型,比如None.[].{}.期待抛出TypeError 把上面这些测试用例放到一个测试模块里,就是一个完整的单元测试  unittest工作原理 unittest中最核心的四部分

Python unittest单元测试框架的使用

一.测试模型 下面这部分来自于某书籍资料,拿过来,按需参考一下: 测试模型 (1)线性测试 1.概念: 通过录制或编写对应应用程序的操作步骤产生的线性脚本.单纯的来模拟用户完整的操作场景.(操作,重复操作,数据)都混合在一起. 2.优点:每个脚本相对独立,且不产生其他依赖和调用.任何一个测试用例脚本拿出来都可以单独执行. 3.缺点:开发成本高,用例之间存在重复的操作.比如重复的用户登录和退出. 维护成本高,由于重复的操作,当重复的操作发生改变时,则需要逐一进行脚本的修改. 4.线性测试实例:用户

Python  unittest单元测试框架的使用

一.测试模型 下面这部分来自于某书籍资料,拿过来,按需参考一下: 测试模型 (1)线性测试 1.概念: 通过录制或编写对应应用程序的操作步骤产生的线性脚本.单纯的来模拟用户完整的操作场景.(操作,重复操作,数据)都混合在一起. 2.优点:每个脚本相对独立,且不产生其他依赖和调用.任何一个测试用例脚本拿出来都可以单独执行. 3.缺点:开发成本高,用例之间存在重复的操作.比如重复的用户登录和退出. 维护成本高,由于重复的操作,当重复的操作发生改变时,则需要逐一进行脚本的修改. 4.线性测试实例:用户

Python unittest 简单实现参数化的方法

Python unittest 理论上是不建议参数驱动的,其用例应该专注单元测试,确保每个method的逻辑正确. 引用Stack Overflow的一个答案, "单元测试应该是独立的,没有依赖项的.这确保了每个用例都有非常具体而专一的测试反应.传入参数会破坏单元测试的这个属性,从而使它们在某种意义上无效.使用测试配置是最简单的方法,也是更合适的方法,因为单元测试不应该依赖外部信息来执行测试.那应该集成测试要做的." 但是实际操作过程中,时不时还是有控制入参的需求的.比如,我想简单实现

详解Python nose单元测试框架的安装与使用

本文介绍了Python nose单元测试框架的安装与使用 ,分享给大家,具体如下: 安装(Python2下安装) pip install nose 原理与命名规则 Nose会自动查找源文件.目录或者包中的测试用例,符合正则表达式(?:^|[\b_\.%s-])[Tt]est,以及TestCase的子类都会被识别并执行. 例如:我们可以将python脚本文件名以"_test"结尾或包含"_test_",方法名以"_test"结尾. 使用方法 查看所

python+selenium自动化框架搭建的方法步骤

环境及使用软件信息 python 3 selenium 3.13.0 xlrd 1.1.0 chromedriver HTMLTestRunner 说明: selenium/xlrd只需要再python环境下使用pip install 名称即可进行对应的安装. 安装完成后可使用pip list查看自己的安装列表信息. chromedriver:版本需和自己的chrome浏览器对应,百度下载. 作用:对chrome浏览器进行驱动. HTMLTestRunner:HTMLTestRunner是Pyt

python selenium自动化测试框架搭建的方法步骤

设计思路 本文整理归纳以往的工作中用到的东西,现汇总成基础测试框架提供分享. 框架采用python3 + selenium3 + PO + yaml + ddt + unittest等技术编写成基础测试框架,能适应日常测试工作需要. 1.使用Page Object模式将页面定位和业务操作分开,分离测试对象(元素对象)和测试脚本(用例脚本),一个页面建一个对象类,提高用例的可维护性: 2.使用yaml管理页面控件元素数据和测试用例数据.例如元素ID等发生变化时,不需要去修改测试代码,只需要在对应的

python+django+rest框架配置创建方法

安装好所需要的插件和包: python.django.pip等版本如下: 采用Django REST框架3.0 1.在python文件夹下D:\python\Lib\site-packages\django\bin打开cmd命令工具,本人将python文件夹名字改为了wwj,请注意: mkdir tutorial cd tutorial virtualenv env source env/bin/activate pip install django pip install djangorest