前言
unittest单元测试框架不仅可以适用于单元测试,还可以适用自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过,最终生成测试结果。
unittest中最核心的部分是:TestFixture、TestCase、TestSuite、TestRunner 本次我们讲述TestCase
操作
现在我们有这样一个代码
class MathMethod: #创建了一个算数的类
def __init__(self,a,b): 定义一个初始化函数/方法
self.a = a
self.b = b
def add(self):#加法 加法的函数
return self.a + self.b
def multi(self):#乘法 乘法的函数
return self.a * self.b
我们往MathMethod()这个类里,传递2个数,然后调用加法就会自动算出2个数相加的和,如果调用乘法,就会算出乘法的值
重点来了,我们写好一串代码之后,我们怎么样自测我们的类、函数 是否都正确呢?
我们可以用单元测试 去测试我们的代码是否都正确。
首先我们要导入我们的unitest
import unitest
class Testmathmethod(unittest.TestCase): #继承了unitest里面的testcase类,专门用来写用例的
'''
一个函数就是一个用例,不能传递参数,只有self关键字
所有的用例都是test开头(函数)
执行函数(用例)是根据ascii编码执行的,abcdef。。。
'''
def test_add_two_positive(self):#两个正数相加
res = MathMethod(1,1).add()
print("1+1的结果是:",res)
def test_add_two_zero(self): #两个0相加
res = MathMethod(0,0).add()
print("0+0的结果是:",res)
def test_add_two_negative(self): #两个负数相加
res = MathMethod(-1,-2).add()
print("-1+-2的结果是:",res)
当我们对加法进行了我们的用例编写之后,用函数的方式去执行
if __name__ == '__main__':
unittest.main()
执行完看下我们的执行结果
我们来解析一下我们的执行结果
1:... 三个点代表执行了3次,有3个成功了,F代表断言失败了,E代表Error 失败 ..F..E这个意思是1、2条用例成功,第三条断言失败,第45条成功,第6条失败
2.一共执行了3条用例,一共用了0.002s时间
3.ok,第一条用例执行情况,第二条用例执行情况,第三条执行情况
那么有小伙伴就会有疑惑,我明明 写用例的时候第一条写的是1+1 第二条写的是 0+ 0 第三条写的是 -1+ -2
为什么执行结果却不是按照我写的呢?
其实他是按照ascii 码的顺序执行的,例如abcdefg......的顺序
看下我们写的用例
test_add_two_positive #两个正数相加
test_add_two_zero #两个0相加
test_add_two_negative 两个负数相加
如果根据ascii码的顺序, n > P > Z
test_add_two_negative #两个负数相加
test_add_two_positive #两个正数相加
test_add_two_positive #两个0相加
那也就与我们的输出值保持了一致