一、概述

本文介绍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之单用例管理(一)的更多相关文章

  1. Python单元测试框架unittest之单用例管理(二)

    概述 利用python进行测试时,测试用例的加载方式有2种: 一种是通过unittest.main()来启动所需测试的测试模块,上篇文章就是使用的这种方式: 一种是添加到testsuite集合中再加载 ...

  2. Python单元测试框架unittest之批量用例管理(discover)

    前言 我们在写用例的时候,单个脚本的用例好执行,那么多个脚本的时候,如何批量执行呢?这时候就需要用到unittet里面的discover方法来加载用例了.加载用例后,用unittest里面的TextT ...

  3. Python单元测试框架unittest之深入学习

    前言 前几篇文章该要地介绍了python单元测试框架unittest的使用,本篇文章系统介绍unittest框架. 一.unittest核心工作原理 unittest中最核心的四个概念是:test c ...

  4. Python单元测试框架unittest使用方法讲解

    这篇文章主要介绍了Python单元测试框架unittest使用方法讲解,本文讲解了unittest概述.命令行接口.测试案例自动搜索.创建测试代码.构建测试套件方法等内容,需要的朋友可以参考下   概 ...

  5. Python单元测试框架unittest重要属性 与 用例编写思路

    前言 本文为转载,原文地址作者列举python unittest这个测试框架的主要属性和 测试用例思路 unittest单元测试框架不仅可以适用于单元测试,还可以适用WEB自动化测试用例的开发与执行, ...

  6. Python单元测试框架unittest

    学习接口自动化测试时接触了unittest单元测试框架,学习时参照了虫师编写的<selenium2自动化测试实战>,个人觉得里面讲的例子还比较容易理解的. 一.基础 1.main()和框架 ...

  7. python单元测试框架-unittest(一)

    简介 unittest单元测试框架不仅可以适用于单元测试,还可以使用WEB自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过,最终生成测试结果. ...

  8. python单元测试框架-unittest(四)之用例综合框架管理

    简述为何如要框架? 前面测试用例与执行都是写在一个文件,当用例数量不断增加的时候,用例的执行与管理变得非常麻烦,因此需要对用例根据具体的功能模块来使用单独的模块来管理.就像一所学校要根据不同年级进行分 ...

  9. python单元测试框架-unittest(三)之用例执行顺序

    执行顺序规则: 测试类或测试方法的数字与字母顺序0~9,A-Z 执行如下脚本,理解用例执行顺序 #coding=utf-8 import unittest class Test1(unittest.T ...

随机推荐

  1. MyBatis执行器

    Mybatis的执行器 下面先展示一张图,用来说明一下Mybatis执行器的整体架构 SimpleExecutor 首先SimpleExecutor是我们最常使用的一个执行器,无论我们执行什么方法默认 ...

  2. Nginx 配置实例-配置动静分离

    Nginx 配置实例-配置动静分离 1. 静态资源的创建 2. nginx 动静分离的配置 3. 验证 1. 静态资源的创建 这里使用的静态资源主要为 HTML 静态文件和图片. mkdir -vp ...

  3. 如何安装selenium以及scrapy,最重要的是pip?

    一般的步骤: # Selenium安装配置        # 1. 安装python的selenium包:pip install selenium# 2. Selenium驱动(Chrome)下载: ...

  4. AutomicBoolean

    AutomicBoolean 介绍 java并发包下提供的原子变量,是原子类其中之一.基本特性是在多线程环境下,多个线程同时执行这些类的实例包含的方法时,具有排他性 当某个线程进入方法,不会被其他线程 ...

  5. Waymo的自主进化

    Waymo的自主进化 3月初,Waymo在推特上宣布,共获得了22.5亿美元(约合人民币156亿元)融资,由Silver Lake(银湖资本).Canada Pension Plan Investme ...

  6. AIFramework框架Jittor特性(下)

    AIFramework框架Jittor特性(下)

  7. NVIDIA深度学习Tensor Core性能解析(下)

    NVIDIA深度学习Tensor Core性能解析(下) DeepBench推理测试之RNN和Sparse GEMM DeepBench的最后一项推理测试是RNN和Sparse GEMM,虽然测试中可 ...

  8. CUDA 7 Stream流简化并发性

    CUDA 7 Stream流简化并发性 异构计算是指高效地使用系统中的所有处理器,包括 CPU 和 GPU .为此,应用程序必须在多个处理器上并发执行函数. CUDA 应用程序通过在 streams  ...

  9. Appium UI自动化测试

    #coding:utf-8 from appium import webdriver import time,traceback ''' desired_capabilities:这些键告诉appiu ...

  10. 【TCP/IP】TCP详解笔记

    目录 前言 17. TCP 传输控制协议 17.1 引言 17.2 TCP 服务 17.3 TCP的首部 18. TCP连接的建立与终止 18.1 引言 18.2 连接的建立与终止 18.2.1 建立 ...