mock简单应用

1.mock简介

python3以后mock模块已经整合到了unittest测试框架中,不用再单独安装
Mock是Python中一个用于支持单元测试的库,它的主要功能是使用mock对象替代掉指定的Python对象,以达到模拟对象的行为

2.mock的作用

  1. 解决依赖问题:当我们测试一个接口或者功能模块的时候,如果这个接口或者功能模块依赖其他接口或其他模块,那么如果所依赖的接口或功能模块未开发完毕,那么我们就可以使用mock模拟被依赖接口,完成目标接口的测试
  2. 单元测试:如果某个功能未开发完成,我们又要进行测试用例的代码编写,我们也可以先模拟这个功能进行测试
  3. 模拟复杂业务的接口:实际工作中如果我们在测试一个接口功能时,如果这个接口依赖一个非常复杂的接口业务,那么我们完全可以使用mock来模拟这个复杂的业务接口,其实这个和解决接口依赖是一样的原理
  4. 前后端联调:如果你是一个前端页面开发,现在需要开发一个功能:根据后台返回的状态展示不同的页面,那么你就需要调用后台的接口,但是后台接口还未开发完成,你完全可以借助mock来模拟后台这个接口返回你想要的数据

3.mock的使用

import unittest  # 导包
from unittest import mock
from FlychordInterfaceTest import readExcel, getURL
from FlychordInterfaceTest.common import configHttp

# 获取接口文档第一页数据
excel = readExcel.Excel('DATA.xlsx', 0).read()


class test01(unittest.TestCase):

    def setUp(self):
        pass

    def tearDown(self):
        pass

    def test_01(self):
        """查看琴行详情"""
        # mock checkResult方法 返回200
        self.checkResult= mock.Mock(return_value=200)
        status = self.checkResult(excel[0][4], excel[0][6], excel[0][9])
        self.assertEqual(status, 200)
        

    def checkResult(self, method, interface, data, headers=None):
        url = getURL.get_url(interface)
        info = configHttp.run_main(method, url, data, headers)
        return info



if __name__ == '__main__':
    unittest.main(verbosity=1)

如果这个接口开发以及开发完了,我们就不用再使用mock了,可以修改下代码
self.checkResult = mock.Mock(return_value=200, side_effect=self.checkResult)
传递side_effect关键字参数, 会覆盖return_value参数值, 使用真实的checkResult 方法测试

这里只写简单的应用,先不深入研究,后面有机会再仔细探讨下mock

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值