美文网首页
python测试之mock

python测试之mock

作者: 张小Di | 来源:发表于2021-02-08 20:51 被阅读0次
什么是mock?

目前很多公司都采用前后端开发,开发完成后再进行联调,这是理想情况,不是很好的实现并行开发,效率较低;如果在前后端开发工程师约定好接口定义后,通过mock接口返回,则可实现前后端并行开发;在测试过程中,对于某些不易构造或不易获取的对象,创建一个虚拟的对象以便测试的方法就是mock。

使用场景
  • 对象信息难构建:测试过程中,需要第三方接口返回特定的数据以符合特定的测试场景,此时往往需要跨部门的沟通协调测试数据,成本较高,效率低,通过mock可以自定义返回所需的测试结果。
  • 依赖的接口尚未开发完成:在对接口性能压测时,需要下游接口及时返回数据,满足上有接口的调用频度。在依赖接口多的情况下,通过mock可减轻工作量。
  • 异常场景:超时异常,连接异常等。测试过程中需要测试一些异常场景,接口正常的情况下无法提供异常数据
优缺点
优点
  • 团队可以并行工作:前后端工程师只需要定义好接口文档,即可开始并行工作,互不影响。与此同时,开发自测阶段也可尽早开展,从而尽早发现问题,有利于整个产品质量以及进度的保证。
  • 系统隔离:当前模块所依赖的其他系统模块出错时,可采用mock隔离,避免干预。
  • 测试覆盖率:正常情况下,异常条件较难达到,使用mock可轻松解决,需要什么测试数据,进行模拟即可。
缺点

测试过程中如果大量使用mock,测试场景也就失去了真实性,可能会导致在后续的系统性测试中才发现BUG,使得缺陷发现较晚,可能会造成后续修复成本较大。所以建议不要过分依赖mock接口进行测试。

解决方案
方案1:搭建模拟服务器,然后模拟向服务器发送请求
  • moco
  • wiremock
    以上两种均需要安装JDK,而后通过jar命令启动服务器
方案2:将测试对象所依存的对象替换为虚构对象的库
  • mock库:mock原是python的第三方库。python 3以后mock模块已经整合到了unittest测试框架中,不用再单独安装。
import unittest
from unittest import mock
class SubClass:
    def add(self, a, b):
        # 代码功能未实现
        pass
class TestSub(unittest.TestCase):
    def test_sub(self):
        sub = SubClass()
        # sub.add为要mock的对象,可以是一个类,或者函数,或是类实例
        # 实例化Mock类得到一个mock对象,并设置mock对象的行为
        sub.add = mock.Mock(return_value=10)
        result = sub.add(12, 23)
        self.assertEqual(result, 10)
if __name__ == '__main__':
    unittest.main()
import mock
# 实例化Mock类得到一个mock对象,并设置mock对象的行为
mock = mock.Mock()
mock.test_mock.return_value = 'Hello Mock'
print(mock.test_mock())
  • responses库:responses的使用主要是靠修饰器@responses.activate实现setup和teardown,以及responses.add()加入期望的返回值
    @responses.activate
    def test_simple1(self):
        responses.add(responses.GET, 'http://test.cn/test',
                      json={'error': 'not found'}, status=200)
        url = 'http://test.cn/test'
        r = requests.get(url)
        # print(r.json())
        self.assertEqual(r.json()['error'], 'not found')

python接口测试之mock
Responses学习笔记
mock介绍及moco框架搭建使用

相关文章

  • python中常用的mock介绍

    mock (Python 标准库) 一个用于伪造测试的库 使用 被测试的类 用mock测试 HTTPretty P...

  • mock介绍

    mock (Python 标准库) 一个用于伪造测试的库 使用 被测试的类 用mock测试 HTTPretty P...

  • python测试之mock

    什么是mock? 目前很多公司都采用前后端开发,开发完成后再进行联调,这是理想情况,不是很好的实现并行开发,效率较...

  • Python从新手到大师——14:Mock测试

    Python 的Mock测试,代码如下: test_func.py test_mock_01.py

  • unittest.mock接口联调

    mock是什么?mock使用场景是什么?unittets.mock是一个python测试库,它是一个替代受测系统的...

  • Python学习打call第七十五天:mock介绍

    1.mock概念 mock又叫模拟,是Python中一个用于测试的库,它的主要功能是使用mock对象替代掉指定的P...

  • 2020-01-31

    Pytest-Mock 进阶用法详解 一、什么是 Mock 测试? Mock测试就是在 测试过程 中,对于某些...

  • 接口测试Mock与HttpClient

    1.Mock框架 1.1mock介绍: mock可以模拟接口测试,通过运行mock框架的jar,快速搭建接口测试。...

  • 软测扩充

    一、 mock 1. 什么是mock? ①测试桩:模拟被测对象的返回,用于测试②mock:通常指mock serv...

  • [PPJ_21] Mock工具Json Server安装、入门操

    目录结构 一、关于Mock 1.Mock简介 Mock:“模拟”的含义。Mock测试,指在测试过程中,对于某些不容...

网友评论

      本文标题:python测试之mock

      本文链接:https://www.haomeiwen.com/subject/sikfxltx.html