Django单元测试简单示例
对一个功能的验证往往是需要很多多测试用例,可以把测试用例集合在一起执行,这就产生了测试套件TestSuite 的概念,它是用来组装单个测试用例,规定用例的执行的顺序,而且TestSuite也可以嵌套TestSuite。
可以通过addTest() 加载TestCase 到TestSuite 中,再返回一个TestSuite 实例。
示例:将simple_test 中的用例装载到测试套件中
suite=unittest.TestSuite() # 创建测试套件
suite.addTest(simple_test('test_add')) # 添加测试用例
suite.addTest(simple_test('test_divide')) # 向套件中添加用例
unittest.makeSuite根据文件批量创建测试套件,如果一个文件中有非常多测试用例,可以根据用例名称的相似性创建测试套件。
unittest.makeSuite(testCaseClass, prefix)
testCaseClass <Class类型>为测试用例类的名称
prefix <str类型>用例相似的部分名称<str>
示例:
suite = unittest.makeSuite(simple_test, 'test') # 创建并批量加载测试用例
unittest.TestLoader()根据目录批量创建测试套件,可以指定用例存放目录,根据文件名称匹配测试用例。
注意:用例存放的子目录中必须具备__init__.py 文件,否则无法加载用例。
unittest.TestLoader().discover(start_dir, pattern='test*.py', top_level_dir=None)
start_dir 要测试的模块名或测试用例目录。
pattern='test*.py' 表示用例文件名的匹配原则。星号“*”表示任意多个字符。
top_level_dir=None 测试模块的顶层目录。None <=> 测试用例不是放在多级目录中
示例:
suites=unittest.defaultTestLoader.discover('./testDirectory, pattern='*_test.py')
或
suites=unittest.TestLoader().discover('./testDirectory, pattern='*_test.py')
创建测试套件后,执行测试用例使用unittest.TextTestRunner().run(TestSuite)
示例:执行加载simple_test用例的测试套件
runner = unittest.TextTestRunner()
runner.run(suite) # 执行测试用例
unittest.TestSuite() 的常用方法
TestSuite.addTest 添加单个测试用例
suite.addTest(simple_test('test_add'))
TestSuite.addTests通过序列添加测试用例
suite.addTests([simple_test('test_add'),simple_test('test_divide')])
TestSuite.countTestCases() 统计测试套件中的用例个数
suite.countTestCases()
测试套件灵活运用
- 为测试用例文件添加suite 方法,方便加载测试套件
示例:
import unittest # 导入unittest 包
from unittest_doc.com.Calculator.Calculator import calculator # 引入需要测试的包
# 所有用例需继承TestCase类或者其子类
class simple_test(unittest.TestCase):
def setUp(self):
print('@@@初始化test_simple@@@')
self.a = calculator(1, 2)
def test_add(self):
print('---测试用例test_simple add---')
self.assertEqual(self.a.minus(), -1, '两值不相等')
self.assertEqual(self.a.add(), 3, '两值不相等')
self.assertNotEqual(self.a.divide(), 1, '两值不相等')
def test_divide(self):
print('---测试用例test_simple divide---')
self.assertEqual(self.a.divide(), 0.5)
def tearDown(self):
print('@@@结束test_simple@@@')
def suite(): # 创建测试添加测试套件函数
suite = unittest.TestSuite() # 建立测试套件
suite.addTests([simple_test('test_add'), simple_test('test_divide')])
return suite
if __name__ == '__main__':
runner = unittest.TextTestRunner(verbosity=2)
runner.run(suite())
如上示例:创建测试套件函数,使用时直接调用其函数,不用额外添加用例。
- 嵌套测试套件,多个测试套件组合在一起
suite1 = unittest.TheTestSuite()
suite2 = unittest.TheTestSuite()
alltests = unittest.TestSuite((suite1, suite2))
Django单元测试简单示例的更多相关文章
- django ORM 简单示例简绍
简单 models 操作 class Host(models.Model): nid = models.AutoField(primary_key=True) #Nid为主键 hostname = m ...
- web 框架的本质及自定义web框架 模板渲染jinja2 mvc 和 mtv框架 Django框架的下载安装 基于Django实现的一个简单示例
Django基础一之web框架的本质 本节目录 一 web框架的本质及自定义web框架 二 模板渲染JinJa2 三 MVC和MTV框架 四 Django的下载安装 五 基于Django实现的一个简单 ...
- Ubuntu18.04安装和配置Django,并实现简单示例
一.前言(系统,django介绍,window.mac.linux简单区别) Django是python开发过程最重要的web框架.因为在看的Django教学视频是在mac下安装的,我自己用的是Lin ...
- django单元测试
django 单元测试小结 django 测试 从前很少写单元测试了,特别是web应用.最近不知不觉喜欢起来这个事情了,发现单元测试对于软件的模块,正交性有很大促进作用,因为函数,模块写的不合 ...
- lucene创建索引简单示例
利用空闲时间写了一个使用lucene创建索引简单示例, 1.使用maven创建的项目 2.需要用到的jar如下: 废话不多说,直接贴代码如下: 1.创建索引的类(HelloLucene): packa ...
- [Django] 单元测试小记
从前很少写单元测试了,特别是web应用.最近不知不觉喜欢起来这个事情了,发现单元测试对于软件的模块,正交性有很大促进作用,因为函数,模块写的不合理,单元测试写起来就麻烦的多呀.公司的项目一直都是用Dj ...
- AMQP消息队列之RabbitMQ简单示例
前面一篇文章讲了如何快速搭建一个ActiveMQ的示例程序,ActiveMQ是JMS的实现,那这篇文章就再看下另外一种消息队列AMQP的代表实现RabbitMQ的简单示例吧.在具体讲解之前,先通过一个 ...
- Django 单元测试
mock 测试 mock 是辅助单元测试的模块,用于测试不方便调用的别人的接口.举个简单的例子,比如说,我们测试django 写的微信登录接口,正常流程下,我们需要前端拉起授权窗口,获取jscode或 ...
- django入门 -- 简单流程
django入门 -- 简单流程 简介 通过简单示例,使用django完成基本流程的开发,学习django的主要的知识点,在后续课程中会逐个知识点进行深入讲解 以“图书-英雄”管理为示例 主要知识点介 ...
随机推荐
- Python错误和异常 学习笔记
错误和异常概念 错误: 1.语法错误:代码不符合解释器或者编译器语法 2.逻辑错误:不完整或者不合法输入或者计算出现问题 异常:执行过程中出现万体导致程序无法执行 1.程序遇到 ...
- VS中快捷键修改以及快捷键的查看
eclipse用习惯了一直想把VS中的alt+/改为自动补全,同时自定义一下C#环境下自动加入命名控件的快捷键,前段时间摸索了一下,找到了比较好的方法 首先是vs中修改快捷键的方法:工具->选项 ...
- Get方法和post方法有何不同?
Get方法和post方法有何不同? 在B/S应用程序中,前台与后台的数据交互,都是通过HTML中Form表单完成的.Form提供了两种数据传输的方式——get和post.虽然它们都 是数据的提交方式, ...
- MongoDB安装问题以及启动
在安装MongoDB的文件中找到bin文件,其中有mongo.exe应用程序,双击打开会出现第二幅图的样子. 将MongoDB服务器作为Windows服务运行,运行后,不知道为什么无法启动,即使删除d ...
- 安装与使用 Trac 来管理项目
1 概要 以 Windows 平台为例,讲述一下有关 Trac 的基本配置与使用,同时分享一下有关 Trac 的项目管理经验. 2 安装 Trac 前的准备工作 2.1 准备工作 安装 Pytho ...
- [转]OpenStack Neutron运行机制解析概要
转载自:http://panpei.net.cn/2013/12/04/openstack-neutron-mechanism-introduce/ 自从开学以来,玩OpenStack也已经3个月了, ...
- 【Android】 导入项目报错的解决方案
1.打项目的properties -->android 为其指一个运版本, 2.修改default properties 文件 ,改相应版本等级 3.选中项目,单击右键,选中properties ...
- C++ 术语(C++ Primer)
argument(实参):传递给被调用函数的值.block(块):花括号括起来的语句序列.buffer(缓冲区):一段用来存放数据的存储区域.IO 设备常存储输入(或输出)到缓冲区,并独立于程序动作对 ...
- http后台json解析实例
localhost:8080/hbinterface/orderInterface/sIReverseAccept.do?bizType=4&&bnetAccount=ESBTEST2 ...
- MySQLCouldn't find MySQL manager
mysql出现MySQLCouldn't find MySQL manager错误的解决办法 最近我的一个linux服务器上的网站全部无法打开.....访问网站没有提示.....只出现该页无法显示的错 ...