Python单元测试模块---unittest
unittest是一个python版本的junit,junit是Java中的单元测试框架,对java的单元测试,有一句话很贴切:Keep the bar green,相信使用eclipse写过java单元测试的都心领神会。unittest实现了很多junit中的概念,比如我们非常熟悉的test case, test suite等,总之,原理都是相通的,只是用不同的语言表达出来。
unittest主要概念:
1. 一个TestCase的实例就是一个测试用例。什么是测试用例呢?就是一个完整的测试流程,包括测试前准备环境的搭建(setUp),执行测试代码(run),以及测试后环境的还原(tearDown)。元测试(unit test)的本质也就在这里,一个测试用例是一个完整的测试单元,通过运行这个测试单元,可以对某一个问题进行验证。
2.而多个测试用例集合在一起,就是TestSuite,而且TestSuite也可以嵌套TestSuite。
3.TestLoader是用来加载TestCase到TestSuite中的,其中有几个loadTestsFrom__()方法,就是从各个地方寻找TestCase,创建它们的实例,然后add到TestSuite中,再返回一个TestSuite实例。
4.TextTestRunner是来执行测试用例的,其中的run(test)会执行TestSuite/TestCase中的run(result)方法。
先看一个简单的测试:
先定义一个类,实现两个参数相加并且返回
class Add():
def add(self,a,b):
return a+b
测试类:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2017/7/27 10:17
# @File : test_add.py
from unittest import TestCase
from func import Add
class TestAdd(TestCase):
def test_add(self):
add=Add()
self.assertEquals(add.add(1,9),10)
编写单元测试时,我们需要编写一个测试类,从unittest.TestCase继承。
以test开头的方法就是测试方法,不以test开头的方法不被认为是测试方法,测试的时候不会被执行。
对每一类测试都需要编写一个test_xxx()方法。由于unittest.TestCase提供了很多内置的条件判断,我们只需要调用这些方法就可以断言输出是否是我们所期望的。最常用的断言就是assertEquals()
以下为测试模块的内置方法: