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

python 单元测试

程序员文章站 2024-02-26 23:20:16
...

Python中有一个自带的单元测试框架是unittest模块,即单元测试,它里面封装了一些校验返回的结果方法和一些用例执行前的初始化操作。

相关概念:

TestCase: 也就是测试用例

TestSuite: 多个测试用例集合在一起,就是TestSuite

TestLoader:加载TestCase到TestSuite中

TestRunner:执行测试用例, 测试的结果会保存到TestResult实例中,包括运行了多少测试用例,成功率,失败率等信息

下面代码为简单的单元测试用例演示:

#注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2019-1-14
@author: pp
Project: 使用unittest框架来编写测试用例
'''
#导入unittest
import unittest

#定义测试类,父类为unittest.TestCase
#可以继承unittest.TestCase的方法,比如setUp和tearDown方法,这些方法可以在子类中重写
#可以继承unittest.TestCase的各种断言方法
class Test(unittest.TestCase): 
    
#定义setUp()方法,用于测试用例执行前的初始化,在最开始执行
#注意,所有类中方法的入参为self,定义方法的变量也要“self.变量”
#注意,输入的值为字符型的需要转为int型
    def setUp(self):
        self.number=raw_input('Please enter a number:')
        self.number=int(self.number)

#定义测试用例,以“test_”开头,注意方法的入参为self
#可使用unittest.TestCase类下面的各种断言方法用于对测试结果的判断
#可定义多个测试用例
    def test_case1(self):
        print self.number
        self.assertEqual(self.number,10,msg='Your input is not 10')
        
    def test_case2(self):
        print self.number
        self.assertEqual(self.number,20,msg='Your input is not 20')

    @unittest.skip('暂时跳过此用例的测试')
    def test_case3(self):
        print self.number
        self.assertEqual(self.number,30,msg='Your input is not 30')

#定义tearDown()方法用于测试用例执行之后的后续,在最后执行
    def tearDown(self):
        print 'Test over'
        
#如果直接运行该文件(__name__值为__main__),则执行以下语句,常用于测试脚本是否能够正常运行
if __name__=='__main__':
#执行测试用例方案一如下:
#unittest.main()方法会搜索该模块下所有以test开头的测试用例方法,并自动执行它们。执行顺序是命名顺序:先执行test_case1,再执行test_case2
    unittest.main()