【测试必会】一文学透Mock!

简介: 【测试必会】一文学透Mock!

什么是 Mock


顾名思义 Mock 即模拟,其为软件行业的术语。通常在软件开发中,当后台接口或者依赖的接口还未开发完成的时候,或者在前后端联调中而后端还未开发完成的时候,如果需要实施测试,就需要通过 MockServer 开展测试。


MockServer 即通过模拟后台接口,在未完成接口开发的情况下完成测试工作。其属测试范畴概念。


在线的 MockServer


如果您向快速的体验 MockServer,那我推荐您使用 getman


https://getman.cn/mock
复制代码


创建一个 Mock 接口


网络异常,图片无法展示
|


测试 Mock 接口


网络异常,图片无法展示
|


Python 的 MockServer


Unittest 的 Mock


mock 原是 python 的第三方库,python3 以后 mock 模块已经整合到了 unittest 测试框架中,不用再单独安装。


创建 Mock 接口


from unittest import mock
def userinfo(name):
    '''
    return: {'name':name}
    '''
    pass
def test_case():
    # mock userinfo
    userinfo = mock.Mock(return_value={'name': 'phyger'})
    # get result
    ret = userinfo('phyger')
    # judge
    if  ret == {'name': 'phyger'}:
        print('pass')
    else:
        print('not pass')
if __name__ == "__main__":
    test_case()
复制代码


运行结果


网络异常,图片无法展示
|


当然,你也可以通过 unittest 编写用例进行实际的 Mock 测试。


Pytest 的 Mock


pytest-mock 是一个 pytest 的插件,安装即可使用。 它提供了一个名为 mockerfixture,仅在当前测试 functionmethod 生效,而不用自行包装。


安装pytest-mock


pip install pytest-mock
复制代码


创建 Mocke 接口


import pytest
from pytest_mock import mocker
def userinfo():
    return 'ok'
def get_userinfo():
    return userinfo()
def test_for_userinfo(mocker):
    mkd1 = mocker.patch('test_mk.userinfo', return_value='not ok')
    assert get_userinfo()=='not ok'
def test_for_user(mocker):
    mkd2 = mocker.patch('test_mk.userinfo', return_value='mocked')
    assert mkd2() == 'mocked'
if __name__ == "__main__":
    command = ['-q','test_mk.py']
    pytest.main(command)
复制代码


运行结果


网络异常,图片无法展示
|


更多内容请查看 unittest.mockpytest-mock 官方文档。

相关文章
|
前端开发
什么是 Mock 测试?掌握 Mock 测试的核心原理
Mock 的意思就是,当你很难拿到源数据时,你可以使用某些手段,去获取到跟源数据相似的假数据,拿着这些假数据,前端可以先行开发,而不需要等待后端给了数据后再开发。
|
25天前
|
Java 测试技术 开发者
必学!Spring Boot 单元测试、Mock 与 TestContainer 的高效使用技巧
【10月更文挑战第18天】 在现代软件开发中,单元测试是保证代码质量的重要手段。Spring Boot提供了强大的测试支持,使得编写和运行测试变得更加简单和高效。本文将深入探讨Spring Boot的单元测试、Mock技术以及TestContainer的高效使用技巧,帮助开发者提升测试效率和代码质量。
136 2
|
2月前
|
测试技术 数据库连接 数据库
提升软件测试效率与灵活性:探索Mock测试的重要性
【9月更文挑战第20天】在软件测试领域,提升测试效率与灵活性至关重要。Mock 测试通过模拟外部组件,使模块能独立测试,缩短测试周期;快速反馈机制让测试结果即时可见,加速问题修复;还能模拟异常情况和进行参数化测试,增强测试全面性与灵活性,从而显著提高软件质量和开发效率。
|
3月前
|
Java 测试技术
SpringBoot单元测试快速写法问题之区分链路环节是否应该被Mock如何解决
SpringBoot单元测试快速写法问题之区分链路环节是否应该被Mock如何解决
|
3月前
|
IDE Java 测试技术
单元测试问题之Mockito 3.4mock静态方法如何解决
单元测试问题之Mockito 3.4mock静态方法如何解决
87 1
|
3月前
|
Java 测试技术 API
Java 新手入门:Java单元测试利器,Mock详解
Java 新手入门:Java单元测试利器,Mock详解
200 1
|
3月前
|
Java 测试技术 数据库
SpringBoot单元测试快速写法问题之不想在PandoraBoot工程中Mock Dao层如何解决
SpringBoot单元测试快速写法问题之不想在PandoraBoot工程中Mock Dao层如何解决
|
3月前
|
Java 测试技术 API
SpringBoot单元测试快速写法问题之确定链路上的Mock点如何解决
SpringBoot单元测试快速写法问题之确定链路上的Mock点如何解决
|
4月前
|
测试技术
单元测试策略问题之Mock测试的问题如何解决
单元测试策略问题之Mock测试的问题如何解决
|
4月前
|
测试技术
详解单元测试问题之处理@Mock注解时mock对象的创建如何解决
详解单元测试问题之处理@Mock注解时mock对象的创建如何解决
44 1