参考文档:https://blog.csdn.net/huilan_same/article/details/52944782
Unittest是python里面 的单元测试框架,作用是:组建测试用例(包含断言),执行用例,生成测试报告
最简单的unittest应用场景
这种简单应用场景的代码,不会告诉你执行成功多少个,执行失败多少个
import unittest
class Test_1(unittest.TestCase):
def test_add(self):
self.assertEquals((5+2),7)
def test_multiply(self):
self.assertEquals(5*2,11)
if __name__=="__main__":
unittest.main()
前置、后置
__author__ = 'Administrator'
# coding:utf-8
import unittest
import time
class Test1(unittest.TestCase):
@classmethod
def setUpClass(cls):
print("setUpClass初始化操作:用例开始前只执行一次")
@classmethod
def tearDownClass(cls):
print("tearDownClass收尾清理操作:用例结束时候只执行一次")
def setUp(self):
print("setUp每次用例开始前都会执行!!!")
def tearDown(self):
print("tearDown每次用例结束后都会执行!!!")
def test_01(self):
time.sleep(1)
print("正在执行用例01")
def test_02(self):
time.sleep(1)
print("正在执行用例02")
if __name__ == "__main__":
unittest.main()
跳过某个case
如果我们临时想要跳过某个case不执行怎么办?unittest也提供了几种方法:
方法1(最常用的):skip装饰器
@unittest.skip("I don't want to run this case.")
方法2:在函数里面加上一行 self.skipTest('Do not run this.')
测试用例放到suite里面执行,并且把执行结果写到txt 文件
这种会在结果文件里面,显示执行了多少条用例,每1条的结果是成功还是失败
mathfunc.py文件
def add(a,b):
return a+b
def minus(a,b):
return a-b
def multi(a,b):
return a*b
def divide(a,b):
return a/b
test_mathfunc.py文件
__author__ = 'Administrator'
# -*- coding: utf-8 -*-
import unittest
from mathfunc import *
class TestMathFunc(unittest.TestCase):
"""Test mathfuc.py"""
@classmethod
def setUpClass(cls):
print("do something before test.Prepare environment.")
@classmethod
def tearDownClass(cls):
print("do something after test.Clean up.")
def test_add(self):
"""Test method add(a, b)"""
print("add")
self.assertEqual(3, add(1, 2))
self.assertNotEqual(3, add(2, 2))
def test_minus(self):
"""Test method minus(a, b)"""
print("minus")
self.assertEqual(1, minus(3, 2))
def test_multi(self):
"""Test method multi(a, b)"""
print("multi")
self.assertEqual(6, multi(2, 3))
def test_divide(self):
"""Test method divide(a, b)"""
print("divide")
self.assertEqual(9, divide(6, 3))
self.assertEqual(2.5, divide(5, 2))
if __name__=="__main__":
suite=unittest.TestSuite()
suite.addTest(unittest.TestLoader().loadTestsFromTestCase(TestMathFunc))
with open('result.txt','a') as f:
runner= unittest.TextTestRunner(stream=f,verbosity=2)
runner.run(suite)
result.txt内容如下
test_add (__main__.TestMathFunc)
Test method add(a, b) ... ok
test_divide (__main__.TestMathFunc)
Test method divide(a, b) ... FAIL
test_minus (__main__.TestMathFunc)
Test method minus(a, b) ... ok
test_multi (__main__.TestMathFunc)
Test method multi(a, b) ... ok
======================================================================
FAIL: test_divide (__main__.TestMathFunc)
Test method divide(a, b)
----------------------------------------------------------------------
Traceback (most recent call last):
File "D:/hspython/unittest20181121/test_mathfunc.py", line 38, in test_divide
self.assertEqual(9, divide(6, 3))
AssertionError: 9 != 2.0
----------------------------------------------------------------------
Ran 4 tests in 0.001s
FAILED (failures=1)