python unittest 之mock学习笔记(续一)

来源:互联网 发布:csocket编程详解 编辑:程序博客网 时间:2024/05/16 09:59

假设有文件fun1和class2,class2类中的函数调用了fun1中的函数。利用mock方法生成fun1中函数的一个fake返回值,在此基础上,对class2类中的函数进行单元测试。

代码如下:
fun1文件

#!/usr/bin/env python# -*- coding: utf-8 -*-# fun1.pydef flag():    return 1

classs2文件

#!/usr/bin/env python# -*- coding: utf-8 -*-#  class2.pyimport fun1class Class2(object):    def adds(self,a,b,c):        if fun1.flag():            return (a+b+c)        else:            return (a+b)

对class2利用mock测试文件:

#!/usr/bin/env python# -*- coding: utf-8 -*-# ClassStudy.pyimport class2import mockimport unittestclass Class2TestCase(unittest.TestCase):    @mock.patch('class2.fun1')    def test_adds(self, mock_fun1):        # 实例化Class2        c2 = class2.Class2()        # 设置class2类中的函数调用fun1中的flag为0        # 则调用class2类中的函数adds返回a+b        print ("设置class2类中的函数调用fun1中的flag为0")        print ("则调用class2类中的函数adds返回a+b")        mock_fun1.flag.return_value = 0        num = c2.adds(1,2,3)        self.assertEqual(num,3)        # 设置class2类中的函数调用fun1中的flag为1        # 则调用class2类中的函数adds返回a+b+c        print ("设置class2类中的函数调用fun1中的flag为1")        print ("则调用class2类中的函数adds返回a+b+c")        mock_fun1.flag.return_value = -1        num = c2.adds(1, 2, 3)        self.assertEqual(num, 6)
0 0
原创粉丝点击