欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

unittest初体验

程序员文章站 2022-05-14 18:56:27
...

count.py

#!/usr/bin/env python 
# -*- coding:utf-8 -*-

'''
Author:qin
Date:2018/11/08
Describe:简单计算器+、-
'''

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

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

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

test_count.py

#!/usr/bin/env python
# -*- coding:utf-8 -*-

import unittest
import HTMLTestRunner
from testforunittest.count import Calculator


class CountTest(unittest.TestCase):
    def setUp(self):
        self.cal = Calculator(8,4)

    def tearDown(self):
        pass

    def test_add(self):
        result = self.cal.add()
        self.assertEqual(result,12)


    def test_sub(self):
        result = self.cal.sub()
        self.assertEqual(result, 4)

if __name__=="__main__":
    #构造测试集
    suit = unittest.TestSuite()
    suit.addTest(CountTest("test_add"))
    suit.addTest(CountTest("test_sub"))
    #执行测试
    fp = open('./result.html','wb')
    runner = HTMLTestRunner.HTMLTestRunner(stream=fp,title=u'<project name>test report',description=u'describe...')
    #runner = unittest.TextTestRunner
    runner.run(suit)
    fp.close()

setUp()和 tearDown()在单元测试框架中比较特别,它们分别在每一个测试用例的开始和结束执行。setUp()方法用于测试用例执行前的初始化工作,例如初始化变量、生成数据库测试数据、打开浏览器等。tearDown()方法与 setUp()方法相呼应,用于测试用例执行之后的善后工作,例如清除数据库测试数据、关闭文件、关闭 浏览器等。

unittest 要求测试方法必须以“test”开头。例如,test_add、test_sub 等。
接下来,调用 unittest.TestSuite()类中的 addTest()方法向测试套件中添加测试用例。简单的可以将测试套件理解成运行测试用例的集合。

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

如果想默认运行当前测试文件下的所有测试用例,可以直接使用 unittest.main()方法。那么 main()方法在 查找测试用例时按照两个规则。首先,该测试类必须继承 unittest.TestCase 类;其次,该测试类下面的方法必 须以“test”开头。

这里使用HTMLTestRunner,来源:https://github.com/defnngj/HTMLTestRunner。将HTMLTestRunner.py文件复制到工程目录下,如果对html中的显示效果不满意,也可修改成文件。