目 录CONTENT

文章目录

超级好用的接口Mock网站

phyger
2022-03-26 / 0 评论 / 0 点赞 / 879 阅读 / 1,251 字 / 正在检测是否收录...

什么是 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 官方文档。

0

评论区