单元测试

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

在说unittest之前,先说几个概念:

TestCase 也就是测试用例

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

TestLoader是用来加载TestCase到TestSuite中的

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

每种语言都有对应的单元测试框架:

    python   unittest

    java  junit

    php   phpunit

单元测试:

  开发自己测自己写的代码

安装:

pip install unittest

 简单实用unittest

import unittest

def add(a,b):
    return a+b

class AddTest(unittest.TestCase):
    def test_normal(self):          #函数名要以test开头,否则不会被执行
        result=add(1,1)
        self.assertEqual(2,result)  #对比实际结果,和预期结果

    def test_error(self):           #函数名要以test开头,否则不会被执行
         result=add(1,1)
         self.assertEqual(1,result)

unittest.main()                     #会运行当前python文件里面的所有测试用例
运行测试用例的有两种方法(产生测试报告
  1、unittest.main()此方法适合运行当前文件的run

   2、如果右键运行的时候出现(run 'Unittests in ......')就删掉方法1中的代码在运行

    

下面是一些常用的断言,也就是校验结果

 assertEqual(a, b)     a == b      
 assertNotEqual(a, b)     a != b      
 assertTrue(x)     bool(x) is True      
 assertFalse(x)     bool(x) is False      
 assertIsNone(x)     x is None     
 assertIsNotNone(x)     x is not None   
 assertIn(a, b)     a in b    
 assertNotIn(a, b)     a not in b

 用例运行的先后顺序

import unittest

def add(a,b):
    return a+b

class AddTest(unittest.TestCase):
    def test_normal(self):          
        print('test_normal')
        # result=add(1,1)
        # self.assertEqual(2,result)   

    def test_error(self):           
        print('test_error')
         # result=add(1,2)
         # self.assertEqual(3,result,'结果计算错误')
    def test_all(self):
        print('test_all')

    def test_zero(self):
        print('test_zero')

unittest.main()     

通过运行以上代码可以看出用例运行时按用例名称的字母顺序来运行的

原文地址:https://www.cnblogs.com/cwl-bj/p/12690291.html