Python单元测试模块---unittest

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()

以下为测试模块的内置方法:

Python单元测试模块---unittest_第1张图片

Python单元测试模块---unittest_第2张图片

Python单元测试模块---unittest_第3张图片

你可能感兴趣的:(Python学习)