Python单元测试框架unittest之单用例管理(一)
一、概述
本文介绍python的单元测试框架unittest,unittest原名为PyUnit,是由java的JUnit衍生而来,这是Python自带的标准模块unittest。unittest是基于java中的流行单元测试框架junit设计的,其功能强大且灵活,对于熟悉junit的人来说掌握unittest很简单。 unittest涉及的知识点较多,但核心的就那一些,本文只介绍最核心和基础的内容。
类似junit,使用unittest编写python的单元测试代码,包括如下几个步骤:
1)编写一个python类,继承unittest模块中的TestCase类,这就是一个测试类;
2)在上面编写的测试类中定义测试方法(这个就是指的测试用例),每个方法的方法名要求以 test 打头,没有额外的参数。 在该测试方法中调用被测试代码,校验测试结果,TestCase类中提供了很多标准的校验方法,如最常见的assertEqual;
3)执行 unittest.main() ,该函数会负责运行测试,它会实例化所有TestCase的子类,并运行其中所有以test打头的方法。

二、案例
我们下面看一个例子,编写如下的python文件,为了简单,我们将被测函数与测试代码放在一个文件中了:
# coding:utf-8 import unittest #被测试方法
def cal(a,b):
return a+b class singletest(unittest.TestCase): def setUp(self):
print "setUp"
pass def tearDown(self):
print "tearDown"
pass def test_01(self):
print ("test_01")
expected = 6
result = cal(2, 4)
self.assertEqual(expected, result) def test_02(self):
print ("test_02")
expected = 0
result = cal(2, 1)
self.assertEqual(expected, result) #执行测试代码
if __name__ == '__main__':
unittest.main()
运行结果如下:
1 .F
2 ======================================================================
3 FAIL: test_02 (__main__.singletest)
4 ----------------------------------------------------------------------
5 Traceback (most recent call last):
6 File "C:/Users/zhangxiaoding/PycharmProjects/Mytest/singletest/testcase.py", line 32, in test_02
7 setUp
8 self.assertEqual(expected, result)
9 AssertionError: 0 != 3
10
11 ----------------------------------------------------------------------
12 Ran 2 tests in 0.001s
13 test_01
14
15 tearDown
16 FAILED (failures=1)
17 setUp
18 test_02
19 tearDown
20
21 Process finished with exit code 1
上面显示出了执行出错的用例,以及出错信息。最后两句给出了整个测试执行所花的时间,以及测试失败的用例数。
如果我们将test_02修改正确,运行结果输出如下:
1 ..
2 ----------------------------------------------------------------------
3 Ran 2 tests in 0.001s
4
5 OK
6 setUp
7 test_01
8 tearDown
9 setUp
10 test_02
11 tearDown
12
13 Process finished with exit code 0
全部运行通过!
Python单元测试框架unittest之单用例管理(一)的更多相关文章
- Python单元测试框架unittest之单用例管理(二)
概述 利用python进行测试时,测试用例的加载方式有2种: 一种是通过unittest.main()来启动所需测试的测试模块,上篇文章就是使用的这种方式: 一种是添加到testsuite集合中再加载 ...
- Python单元测试框架unittest之批量用例管理(discover)
前言 我们在写用例的时候,单个脚本的用例好执行,那么多个脚本的时候,如何批量执行呢?这时候就需要用到unittet里面的discover方法来加载用例了.加载用例后,用unittest里面的TextT ...
- Python单元测试框架unittest之深入学习
前言 前几篇文章该要地介绍了python单元测试框架unittest的使用,本篇文章系统介绍unittest框架. 一.unittest核心工作原理 unittest中最核心的四个概念是:test c ...
- Python单元测试框架unittest使用方法讲解
这篇文章主要介绍了Python单元测试框架unittest使用方法讲解,本文讲解了unittest概述.命令行接口.测试案例自动搜索.创建测试代码.构建测试套件方法等内容,需要的朋友可以参考下 概 ...
- Python单元测试框架unittest重要属性 与 用例编写思路
前言 本文为转载,原文地址作者列举python unittest这个测试框架的主要属性和 测试用例思路 unittest单元测试框架不仅可以适用于单元测试,还可以适用WEB自动化测试用例的开发与执行, ...
- Python单元测试框架unittest
学习接口自动化测试时接触了unittest单元测试框架,学习时参照了虫师编写的<selenium2自动化测试实战>,个人觉得里面讲的例子还比较容易理解的. 一.基础 1.main()和框架 ...
- python单元测试框架-unittest(一)
简介 unittest单元测试框架不仅可以适用于单元测试,还可以使用WEB自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过,最终生成测试结果. ...
- python单元测试框架-unittest(四)之用例综合框架管理
简述为何如要框架? 前面测试用例与执行都是写在一个文件,当用例数量不断增加的时候,用例的执行与管理变得非常麻烦,因此需要对用例根据具体的功能模块来使用单独的模块来管理.就像一所学校要根据不同年级进行分 ...
- python单元测试框架-unittest(三)之用例执行顺序
执行顺序规则: 测试类或测试方法的数字与字母顺序0~9,A-Z 执行如下脚本,理解用例执行顺序 #coding=utf-8 import unittest class Test1(unittest.T ...
随机推荐
- 在 Visual Studio 里一秒打开 ILSpy,并反编译当前项目
下载 ILSpy(如果已有 ILSpy,忽略此步骤) 1.打开官方git 仓库 - https://github.com/icsharpcode/ILSpy 2.点击右侧的 Releases 最新版, ...
- python 定时任务APScheduler 使用介绍
python 定时任务APScheduler 使用介绍 介绍: APScheduler的全称是Advanced Python Scheduler.它是一个轻量级的 Python 定时任务调度框架. ...
- Go语言协程并发---等待组sync.WaitGroup
package main import ( "fmt" "sync" "time" ) /*等待组API介绍*/ func main071( ...
- Apollo 自动驾驶开发套件(D-KIT)
Apollo 自动驾驶开发套件(D-KIT)
- CVPR2019目标检测论文看点:并域上的广义交
CVPR2019目标检测论文看点:并域上的广义交 Generalized Intersection over Union Generalized Intersection over Union: A ...
- 鱼眼摄像头SLAM
鱼眼摄像头SLAM 在机器人技术.摄影测量学和计算机视觉等领域,鲁棒相机位姿估计是许多视觉应用的核心.近年来,在复杂.大规模的室内外环境中,人们越来越关注相机位姿估计方法的实时性.通用性和可操作性.其 ...
- 如何写新的C++ OP
如何写新的C++ OP 概念简介 简单介绍需要用到基类,详细介绍请参考设计文档. framework::OperatorBase: Operator(简写,Op)基类. framework::OpKe ...
- CodeGen API分析
CodeGen API分析 作为使用命令行界面的替代方法,开发人员可以使用核心CodeGen环境编写自定义工具或实用程序来生成代码,从而将CodeGen更紧密地集成到开发环境中. 为了实现这一点,Co ...
- 使用现代C++如何避免bugs(下)
使用现代C++如何避免bugs(下) About virtual functions Virtual functions hinder a potential problem: the thing ...
- 与现代传感器的接口:轮询ADC驱动程序
与现代传感器的接口:轮询ADC驱动程序 Interfacing with modern sensors: Polled ADC drivers 我们研究了在现代嵌入式应用程序中,开发人员应该如何创建一 ...