zoukankan      html  css  js  c++  java
  • mock的使用-解决接口依赖问题

    参考:https://www.jianshu.com/p/15594044ab27

    pip install mock
    pip install pytest-mock   (相当于mock的升级版)

    举例:

    # 文件路径:common/mock_demo.py
    import requests
    
    
    def mock_request(url):
        """需要被mock的请求"""
        return requests.get(url).status_code
    
    
    def invoke_mock_request(url):
        return mock_request(url)

     测试用例

    import mock
    from pytest_mock import mocker
    from common.mock_demo import invoke_mock_request
    
    
    def test_mock_1(mocker):
        """方法一:使用的是pytest-mock 中的mocker"""
        mocker.patch("common.mock_demo.mock_request", return_value=300)    # 被mock请求函数的路径一定要写对
        assert invoke_mock_request("https://www.baidu.com/") == 300
    
    
    def test_mock_2():
        """方法二:使用的 mock 中patch方法"""
        with mock.patch("common.mock_demo.mock_request", return_value=300) as foo:
            assert invoke_mock_request("https://www.baidu.com/") == foo.return_value
    
    
    @mock.patch("common.mock_demo.mock_request", return_value=300)
    def test_mock_3(mock_request):
        """方法三:使用的装饰器的方式对mock对象的函数返回值进行替换"""
        assert invoke_mock_request("https://www.baidu.com/") == mock_request.return_value

    即:在调用 invoke_mock_request() 之前先对其接口依赖的 mock_request() 方法的返回值可以替换,这样的话不管其方法的返回值如何变化,我们只需要关注此次 mock 即可

  • 相关阅读:
    晕倒的AIX
    MySQL Replication(zt)
    pxe启动网络安装CentOS(win平台)(zt)
    几句比较实用的script
    改注册表方式防DDOS攻击[ZT]
    一个免费空间列表相对集中的地方
    CREE LED的一个小资料
    下一步准备研究的东西:rsync远程同步
    PXE启动安装Linux (zt)
    系统调用
  • 原文地址:https://www.cnblogs.com/wang-mengmeng/p/12602023.html
Copyright © 2011-2022 走看看