关于mock

关于mock

一、什么是mock?

通俗来讲,在开发和测试过程中,由于环境不稳定或者协同开发的同事未完成等情况下,有些数据不容易构造或者不容易获取,就创建一个虚拟的对象或者数据样本,用来辅助开发或者测试工作。减轻了对于协同模块的依赖,使开发以及测试变得更加独立。

二、为什么要使用mock?

现在的很多项目,基本都是划分为一个个小模块进行的,各个模块相互依赖,需要协同进行。但是实际开发过程中,由于各种原因,某些模块在当下可能是不可用的,这就对耦合较高的协同模块会产生不良影响,而使用mock,制造模拟数据,可以减轻这种负面因素。

如下的一些场景,可以使用mock很大程度上减轻这些负面影响。

  1. 所需要数据难以获取(比如后端接口没写好,异常、特殊场景的数据):这些特殊情况和场景下,可能生成一段真实数据很浪费时间,或者当下做不到。而使用mock比真实数据方便很多,此时mock就相当于真实接口数据的替代品,辅助其他相关联模块的开发;
  2. 前后端分离,并行开发:前后端商定好接口标准后,按照统一的标准进行同时开发,规避对互相的依赖,减少时间浪费;
  3. 前后端分离中,对于某些特殊接口,可能不能实际执行,不然会对数据造成污染,此时可以mock一个返回数据,规避此情况,而又不影响实际开发;
  4. 自动化测试:如果在自动化测试中,出现了第三方数据不稳定或者其他情况,会影响测试进度,以及不方便定位问题所在。此时如果利用mock技术,模拟一种其他模块都是正常的场景,专门测试当前模块,可以减轻这种异常情况的干扰,方便定位问题;并且可以自己创造各种不同的数据,方便覆盖测试的各种情况。

三、mock的优缺点分析

优点:

  1. 将本模块通过mock隔离起来,避免因为其他模块的问题,导致自身模块出现异常;
  2. 前后端分离式开发中,通过制定好的接口规范,并行开发,提高总体开发效率;
  3. 测试过程中,所依赖的模块异常时,可以使用mock数据替代,不影响测试进度;
  4. 对于一些难构建的数据,可以使用mock来模拟;

风险:
5. 测试的过程中,如果大量使用mock,会使mock测试的场景失去了真实性,可能会到接入真实数据的时候才会发现缺陷,会造成后续修复成本较高。

最近在搞一个和前端程序员相关的公号,除了技术分享之外,也增加了对于职业发展、生活记录之类的文章,欢迎大家关注,一起聊天、吐槽,一起努力工作,认真生活!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当然可以,Mock 测试可以模拟复杂的场景和数据,来验证代码的正确性和健壮性。 以下是一个例子,假设有一个函数 `get_data`,它从一个 API 中获取数据并返回。我们需要对这个函数进行 Mock 测试。 ```python import requests def get_data(): response = requests.get('http://example.com/api/data') if response.status_code == 200: return response.json() else: return None ``` 我们可以使用 `unittest.mock` 模块来创建一个 Mock 对象,模拟 API 的响应数据。例如,我们可以创建一个 `MockResponse` 类来模拟响应数据: ```python class MockResponse: def __init__(self, data=None, status_code=200): self.data = data self.status_code = status_code def json(self): return self.data ``` 然后,我们可以使用 Mock 对象来测试 `get_data` 函数,例如,我们可以测试当 API 响应成功时的情况: ```python from unittest.mock import patch @patch('requests.get') def test_get_data(mock_get): mock_response = MockResponse(data={'key': 'value'}) mock_get.return_value = mock_response data = get_data() assert data == {'key': 'value'} ``` 这个测试用例使用 `unittest.mock.patch` 装饰器来创建一个 Mock 对象,并将其传递给 `requests.get` 函数。然后,我们可以运行 `get_data` 函数,并检查返回值是否与我们预期的值相同。 当然,这只是一个简单的例子,Mock 测试可以模拟更复杂的场景和数据,以验证代码的正确性和健壮性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值