1.测试文件准备,创建一个依赖的类
# coding:utf-8
class function:
def chen_add(self,x,y):
chen = x * y
# 闭包函数
add1 = self.add(x, y)
return chen, add1
def add(self,x,y):
return x + y
def chu(self,x,y):
return x/y
2.结合unittest验证
# coding:utf-8
import unittest
from unittest.mock import patch
from unittest import mock
from API.function import function
class modktest(unittest.TestCase):
# mock 使用
def test_1(self):
# 1. 调用被测试类
fun = function()
# 2.通过Mock类模拟被调用的add()方法,return_value定义add()方法的返回值,实质是不再调用目标函数而直接返回一个给定的值
fun.chu =mock.Mock(return_value=5)
result = fun.chu(9,3)
self.assertEqual(result,5)
# 依赖模块发生变化后,模拟部分函数调用结果
@patch("API.function.function.add") # 参数中为文件路径.类名.方法名
# 在定义测试用例中,将mock的chen()函数命名为mock_chen对象,使用mock对重命名的方法定义一个值,不影响其他依赖的模块中使用的方法
def test_2(self,mock_add):
x = 5
y = 5
# 设定mock_chen对象返回的值固定为15
mock_add.return_value = 15
fun = function()
chen , add = fun.chen_add(x,y)
self.assertEqual(chen,25)
self.assertEqual(add,15)