详解Django中的unittest及应用
作者:rongge 发布时间:2022-10-24 08:26:54
unittest是python的一个单元测试框架
关于断言
它是用于对一个确定结果和预测结果的一种判断,如果结果正确无任何返回效果,如果结果错误;会抛出AssertionError 异常,如果后面跟了msg则返回msg内容
assert 2 == 2
assert 2 == 1 * 2
assert 2 + 0 == 1 * 2
# ----------------- 以上无任何返回效果
assert 1 > 3, 'wrong'
'''
Traceback (most recent call last):
File "D:/project_of_3期课程/day22/类.py", line 259, in <module>
assert 1 > 3, 'wrong'
AssertionError: wrong
'''
unittest模块属性说明
unittest的属性
unittest.main():使用它可以方便的将一个单元测试模块变为可直接运行的测试脚本,main()方法使用TestLoader类来搜索所有包含在该模块中以“test”命名开头的测试方法,并自动执行他们。执行方法的默认顺序是:根据ASCII码的顺序加载测试用例,数字与字母的顺序为:0-9,A-Z,a-z。所以以A开头的测试用例方法会优先执行,以a开头会后执行。
unittest.TestSuite():unittest框架的TestSuite()类是用来创建测试套件的。
unittest.TextTextRunner():unittest框架的TextTextRunner()类,通过该类下面的run()方法来运行suite所组装的测试用例,入参为suite测试套件。
TestCase类的属性
setUp():方法用于测试用例执行前的初始化工作。如测试用例中需要访问数据库,可以在setUp中建立数据库连接并进行初始化。如测试用例需要登录web,可以先实例化浏览器。
tearDown():方法用于测试用例执行之后的善后工作。如关闭数据库连接。关闭浏览器。
assert*():一些断言方法,在执行测试用例的过程中,最终用例是否执行通过,是通过判断测试得到的实际结果和预期结果是否相等决定的。
assertEqual(a,b,[msg='测试失败时打印的信息']):断言a和b是否相等,相等则测试用例通过。
assertNotEqual(a,b,[msg='测试失败时打印的信息']):断言a和b是否相等,不相等则测试用例通过。
assertTrue(x,[msg='测试失败时打印的信息']):断言x是否True,是True则测试用例通过。
assertFalse(x,[msg='测试失败时打印的信息']):断言x是否False,是False则测试用例通过。
assertIs(a,b,[msg='测试失败时打印的信息']):断言a是否是b,是则测试用例通过。
assertNotIs(a,b,[msg='测试失败时打印的信息']):断言a是否是b,不是则测试用例通过。
assertIsNone(x,[msg='测试失败时打印的信息']):断言x是否None,是None则测试用例通过。
assertIsNotNone(x,[msg='测试失败时打印的信息']):断言x是否None,不是None则测试用例通过。
assertIn(a,b,[msg='测试失败时打印的信息']):断言a是否在b中,在b中则测试用例通过。
assertNotIn(a,b,[msg='测试失败时打印的信息']):断言a是否在b中,不在b中则测试用例通过。
assertIsInstance(a,b,[msg='测试失败时打印的信息']):断言a是是b的一个实例,是则测试用例通过。
assertNotIsInstance(a,b,[msg='测试失败时打印的信息']):断言a是是b的一个实例,不是则测试用例通过。
TextTextRunner的属性
run():是运行测试套件的测试用例,入参为suite测试套件。
unittest.TextTestRunner(verbosity=2).run(suite)
unittest框架使用
方式一:unittest.main()来启动单元测试模块
# coding=utf-8
import unittest
# 方式一:unittest.main()来启动单元测试模块
class MyTestCase(unittest.TestCase):
def setUp(self):
print('测试环境')
def test(self):
print('测试用例')
self.assertEquals(4, 2 * 2)
self.assertEqual(1, 3, 'something was wrong')
def tearDown(self):
print('环境销毁')
if __name__ == '__main__':
unittest.main()
方式二:添加到testsuite集合中,再加载所有的被测试对象
# coding=utf-8<br>import unittest<br><br>class TestCase(unittest.TestCase):
def test1(self):
print('one')
def test2(self):
print('two')
class TestCase1(unittest.TestCase):
def test1(self):
print('three')
def test2(self):
print('four')
if __name__ == '__main__':
un1 = unittest.TestLoader().loadTestsFromTestCase(TestCase)
un2 = unittest.TestLoader().loadTestsFromTestCase(TestCase1)
suite = unittest.TestSuite([un1, un2])
unittest.TextTestRunner(verbosity=2).run(suite)
来源:https://www.cnblogs.com/rongge95500/articles/10512186.html
猜你喜欢
- 异步编程带来的问题在客户端Javascript中并不明显,但随着服务器端Javascript越来越广的被使用,大量的异步IO操作使得该问题变
- 本文从算法入手同时通过实例来讲解如何在SQL Server数据库中实现最优最简的整个过程。算法是计算机科学中一个重要的研究方向,是解决复杂问
- 方法1:import sysprint(sys.argv)得到文件当前绝对路径字符串的一个列表['D:/pycharm/Practi
- 对于xml2ddl项目,Freshmeat.org提供了一整套基于GNU或者GPL通用公共许可证下的Python程序。在一个运行的Pytho
- mysql -uusername -pyourpassword yourdatabasename < c:\sqlfile.sql其中
- 1. 什么是404404是一个 http 错误代码,即请求的网页不存在。代码404的第一个“4”代表客户端的错误,如错误的网页位址;后两的数
- 一.GO程序目录结构在GOPATH目录下的结构--bin(存放编译后生成的可执行文)|----hello.exe(可执行文件)--pkg(存
- 安 * oostpython调用C/C++的方法有很多,本文使用boost.python。考虑到后期有好多在boost上的开发工作,所以boo
- l当今世界,技术发展迅猛,不论是什么行业,大多数关键数据都是放置于数据库中进行管理的,一来目前数据库技术已经相当成熟,二来其管理功能非常强大
- 享元模式(Flyweight Pattern)是什么享元模式是一种结构型模式,它通过共享对象来减少系统中的对象数量,从而降低了内存的使用和系
- 目录1. 首先2. 编程惯用法3. 基础用法4. 库的使用5. 设计模式6. 内部机制7. 使用工具辅助项目开发8. 性能剖析与优化1. 首
- 这几天看了篇叫"Penetration: from application down to OS (Oracle)"的文
- asp取得字段属性代码:set AdoX = server.createobject("adox.c
- 学习vue和nodejs的过程当中,涉及到了axios,今天为了测试,写了get和post两个方法来跟node服务端交互,结果因为heade
- 一、介绍这篇文档旨在介绍如何安装配置基于2台服务器的MySQL集群。并且实现任意一台服务器出现问题或宕机时MySQL依然能够继续运行。虽然这
- 最近Google Code推出了一个面向网站开发者的 * Google DocType。它来自于网站开发者同时又面
- 当您使用FILESYSTEMOBJECT(fso)对象获得某个目录下的文件列表的时候,你有没有发现无法控制它们的排序方式,比如按照名字排序,
- 十要:第一:要认真规划和分析。这是网页设计灵魂工作。创建站点之前,要明确你的网站主要针对哪些访问者,为哪些用户服务,要把握准主页题材第二:网
- 下面这些命令可以在命令行下用isql执行,isql -E -Q "命令",isql.exe
- 如果没有了解栅格系统是什么,建议看完这篇文章以后再回来。其实有很种 CSS 写法实现栅格系统,很多 CSS 库也都会提供类似的栅格系统实现(