模拟requests.get的行为,来进行单元测试

使用情景:

函数get_and_print内部使用requests.get去请求http://abc.com,响应结果为json,并对json进行操作.
现要测试此函数,因此需要模拟实现requests.get,以保证函数单元测试通过,流程如下:
需要用到测试相关的库为 responses

pip install responses
  1. 配置环境,参考使用pycharm进行单元测试并统计代码覆盖率

  2. 待测试函数代码位于 req.py,代码如下


import responses

def get_and_print():
    res = requests.get('http://www.abc.com').json()
    print('Do something with res:',res)
    return res
  1. 测试代码位于test文件夹的任意python文件中,代码如下
import pytest
import responses

from func.req import get_and_print

# 此处mock指定url的响应
@pytest.fixture
def mocked_responses():
    with responses.RequestsMock() as rsps:
        rsps.add(responses.GET, 'http://www.abc.com', status=200, body='{"id":123}',
                 content_type='application/json')
        yield rsps

# 测试代码需要注入mocked_responses
def test_get_and_print(mocked_responses):
    assert 'id' in get_and_print()

  1. 运行测试,参考步骤1中的链接
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值