一、概述

本文介绍python的单元测试框架unittest,这是Python自带的标准模块unittest。unittest是基于java中的流行单元测试框架junit设计的,其功能强大且灵活,对于熟悉junit的人来说掌握unittest很简单。

unittest涉及的知识点较多,但核心的就那一些,本文只介绍最核心和基础的内容。

类似junit,使用unittest编写python的单元测试代码,包括如下几个步骤:

1)编写一个python类,继承 unittest模块中的TestCase类,这就是一个测试类

2)在上面编写的测试类中定义测试方法(这个就是指的测试用例),每个方法的方法名要求以 test 打头,没有额外的参数。 在该测试方法中 调用被测试代码,校验测试结果,TestCase类中提供了很多标准的校验方法,如 最常见的assertEqual。

3)执行 unittest.main() ,该函数会负责运行测试,它会实例化所有TestCase的子类,并运行其中所有以test打头的方法。

二、案例1

我们下面看一个例子,编写如下的python文件,为了简单,我们将被测函数与测试代码放在一个文件中了:

#coding=utf-8
import unittest
#被测试方法
def cal(a,b):
return a+b #测试类
class CalTest(unittest.TestCase):
def testA(self):
expected = 6
result = cal(2,4)
self.assertEqual(expected,result) def testB(self):
expected = 0
result = cal(2,1)
self.assertEqual(expected,result) #执行所以测试代码
if __name__=='__main__':unittest.main()

上面的测试类CalTest中有两个测试方法,显然testB方法我们估计让校验出错。在命令行下执行上述python文件,输出如下信息:

.F

======================================================================

FAIL: testB (__main__.CalTest)

----------------------------------------------------------------------

Traceback (most recent call last):

File "test2.py", line 19, in testB

self.assertEqual(expected,result)

AssertionError: 0 != 3

----------------------------------------------------------------------

Ran 2 tests in 0.001s

FAILED (failures=1)

上面显示出了执行出错的用例,以及出错信息。最后两句给出了整个测试执行所花的时间,以及测试失败的用例数。

如果我们将testB修改正确,运行结果输出如下:

..
----------------------------------------------------------------------
Ran 2 tests in 0.000s

三、案例2

上面的例子只有一个测试文件(python文件)。在实际的项目中,往往又多个测试文件,每个测试文件针对不同的业务代码进行测试。

那这时该怎么去执行所有测试文件中的测试用例呢?

假设我们有test1.py测试文件中定义了一个测试类CalTest1 , 另外一个测试test2.py测试文件中定义了一个测试类CalTest2.

这样要想同时能执行这两个测试文件中的测试用例,可编写如下的一个总的测试文件,作为执行的总入口:

#coding=utf-8
import unittest
from test1 import CalTest1
from test2 import CalTest2
if __name__=='__main__':unittest.main()

从上面的例子,可以看出,使用unittest框架还是比较简单和方便的。

Python单元测试:unittest使用简介的更多相关文章

  1. Python单元测试unittest - 单元测试框架

    一.unittest简介 unitest单元测试框架最初是有JUnit的启发,它支持测试自动化,共享测试的设置和关闭代码,将测试聚合到集合中,以及测试与报告框架的独立性. 二.unittest相关概念 ...

  2. python单元测试unittest

    单元测试作为任何语言的开发者都应该是必要的,因为时隔数月后再回来调试自己的复杂程序时,其实也是很崩溃的事情.虽然会很快熟悉内容,但是修改和 调试将是一件痛苦的事情,如果你在修改了代码后出现问题的话,而 ...

  3. [转]python单元测试unittest

    单元测试作为任何语言的开发者都应该是必要的,因为时隔数月后再回来调试自己的复杂程序时,其实也是很崩溃的事情.虽然会很快熟悉内容,但是修改和调试将是一件痛苦的事情,如果你在修改了代码后出现问题的话,而单 ...

  4. python单元测试unittest实例详解

    转自:http://blog.csdn.net/five3/article/details/7104466 单元测试作为任何语言的开发者都应该是必要的,因为时隔数月后再回来调试自己的复杂程序时,其实也 ...

  5. python单元测试unittest、setUp、tearDown()

    单元测试反应的是一种以测试为驱动的开发模式,最大的好处就是保证一个程序模块的行为符合我们设计的测试用例,在将来修改的时候,可以极大程度保证该模块行为仍然是正确的. 下面我编写一个Dict来,这个类的行 ...

  6. Python单元测试unittest【转自https://www.cnblogs.com/feng0815/p/8045850.html】

    [转自https://www.cnblogs.com/feng0815/p/8045850.html] Python中有一个自带的单元测试框架是unittest模块,用它来做单元测试,它里面封装好了一 ...

  7. Python单元测试--unittest(一)

    unittest模块是Python中自带的一个单元测试模块,我们可以用来做代码级的单元测试. 在unittest模块中,我们主要用到的有四个子模块,他们分别是: 1)TestCase:用来写编写逐条的 ...

  8. selenium自动化测试、Python单元测试unittest框架以及测试报告和日志输出

    部分内容来自:https://www.cnblogs.com/klb561/p/8858122.html 一.基础介绍 核心概念:test case, testsuite, TestLoder,Tex ...

  9. python单元测试-unittest

    python内部自带了一个单元测试的模块,pyUnit也就是我们说的:unittest 1.介绍下unittest的基本使用方法: 1)import unittest 2)定义一个继承自unittes ...

  10. 【Pytest】python单元测试框架pytest简介

    1.Pytest介绍 pytest是python的一种单元测试框架,与python自带的unittest测试框架类似,但是比unittest框架使用起来更简洁,效率更高.根据pytest的官方网站介绍 ...

随机推荐

  1. asp.net word内容读取到页面

    1.添加Microsoft.Vbe.Interop.dll引用. 2.以下方法可以简单的读取到word文档文字内容,不包括图片.格式等. private string ReadWordFile(str ...

  2. Tomcat使用startup启动,一闪而过,如何查看出错信息

    解决办法:打开startup.bat,通过使用run命令在原有启动窗口显示出错信息. 在startup.bat中找到:call "%EXECUTABLE%" start %CMD_ ...

  3. Linux命令之修改主机名

    ubuntu永久修改主机名 1.查看主机名 在Ubuntu系统中,快速查看主机名有多种方法: 其一,打开一个GNOME终端窗口,在命令提示符中可以看到主机名,主机名通常位于“@”符号后: 其二,在终端 ...

  4. VC++学习之网络编程中的套接字

    VC++学习之网络编程中的套接字 套接字,简单的说就是通信双方的一种约定,用套接字中的相关函数来完成通信过程.应用层通过传输层进行数据通信时,TCP和UDP会遇到同时为多个应用程序进程提供并发服务的问 ...

  5. .Net跨平台中遇到的问题小结

    一:创建MVC网站,需要修改Views视图文件夹下的Web.config 二:需要添加web.config中的 <system.web> <compilation debug=&qu ...

  6. 关于Scrapy框架的安装

    Scrapy介绍与环境安装 Scrapy介绍与环境安装 What is scrapy? An open source and collaborative framework for extractin ...

  7. Paragraph Vector在Gensim和Tensorflow上的编写以及应用

    上一期讨论了Tensorflow以及Gensim的Word2Vec模型的建设以及对比.这一期,我们来看一看Mikolov的另一个模型,即Paragraph Vector模型.目前,Mikolov以及B ...

  8. android -上传文件到服务器

    android上传文件到服务器       重点:最好是设置好content-type这些参数的配置!     package com.spring.sky.image.upload.network; ...

  9. 有道翻译API

    轻奢侈品_百度百科 轻奢侈品 有道翻译API 有道翻译API申请成功 API key:72763558 keyfrom:lexus-studio

  10. java常用系统包介绍

    java.applet提供创建 applet 所必需的类和 applet 用来与其 applet 上下文通信的类.java.awt包含用于创建用户界面和绘制图形图像的所有类.java.awt.colo ...