unittest入门

参考文档: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)

猜你喜欢

转载自blog.csdn.net/lelemom/article/details/84312713