unittest

mohanzb 2019-12-08

unittest

简介

unittest是python自带的单元测试框架

重要概念

1)test fixture

用于初始化和清理测试数据及环境

2)test case

测试用例,是测试的最小单元,一般用来检查一组输入的相应是否符合预期,

3)test suite

测试套件,是测试用例或测试套件的组合,一般用来把需要一起执行的测试用例组合到一起

4)test runner

用于运行测试用例并返回结果

主要作用

(1)提供用例组织代码与执行

 当有大量测试用例时,要考虑其扩展性与维护性,考虑用例的规范与组织,使测试更加规范和简单

(2)提供丰富的比较方法

(3)提供丰富的日志

案例

来看一个例子

cal.py

class Calculator:
    def __init__(self, a, b):
        self.a = a
        self.b = b

    def add(self):
        return self.a + self.b

    def sub(self):
        return self.a - self.b

test.py

import unittest
from cal import Calculator

class TestCal(unittest.TestCase):
    def setUp(self):
        print(‘Test begin...‘)
        self.cal = Calculator(2, 3)

    def tearDown(self):
        print(‘Test end...‘)

    def test_add(self):
        res = self.cal.add()
        self.assertEqual(res, 5)

    def test_sub(self):
        res = self.cal.sub()
        self.assertEqual(res, -1)

if __name__ == ‘__main__‘:
    #构造测试集
    suite = unittest.TestSuite()
    suite.addTest(TestCal(‘test_add‘))
    suite.addTest(TestCal(‘test_sub‘))

    runner = unittest.TextTestRunner()
    runner.run(suite)

说明:setUp方法在一个测试用例执行前执行,一般用来初始化变量,生成测试数据,打开浏览器等操作

tearDown方法在一个测试用例执行完成后执行,一般用来清除测试数据,关闭文件,关闭浏览器等操作

unittest要求测试方法必须以‘test‘开头,如test_add, test_sub

unittest.TestSuite()中的addTest()方法向测试套件中添加测试用例

unittest.TextTestRunner()类中的run方法用来运行测试套件中的测试用例。

如果想默认运行当前测试文件下的所有测试用例,直接可以用unittest.main()方法,main方法查找测试用例有两个规则:

(1)测试类必须继承unittest.TestCase

(2)测试用例的方法必须以‘test’开头,如test_add

相关推荐