requests-mock:轻松模拟HTTP请求的利器
一、 简介
requests-mock一个python库,用于单元测试中模拟HTTP请求的响应,它可以进行来模拟接口的各种场景。
安装:
pip install requests-mock
二、 使用方法
模拟post请求
import requests
import requests_mock
def test_01():
with requests_mock.Mocker() as m:
# 模拟post请求内容,返回的json格式,返回码为200
m.post('https://www.wxwxwx.com', json={'name': 'wx'}, status_code=200)
# 根据模拟的请求进行通过requests进行发送模拟信息,查看返回结果内容
r = requests.post('https://www.wxwxwx.com', json={'name': 'wx'})
print(r.text)
assert r.status_code == 200
assert r.json()['name'] == 'wx'
test_01()
模拟动态post请求
import requests
import requests_mock
def test_01():
with requests_mock.Mocker() as m:
# 模拟post请求内容,返回的json格式,返回码为200
def echo_response(request, context):
data = request.json()
return {'json': data, 'status_code': 200}
m.post('https://www.wxwxwx.com', json=echo_response)
data = {'name': 'wx'}
r = requests.post('https://www.wxwxwx.com', json=data)
print(r.text)
assert r.status_code == 200
assert r.json()['json']['name'] == 'wx'
test_01()
模拟请求错误异常
import pytest
import requests
import requests_mock
from requests.exceptions import ConnectionError, Timeout
def test_01():
with requests_mock.Mocker() as m:
# 模拟请求超时处理
m.get('https://www.wxwxwx.com', exc=Timeout)
# 通过pytest.raises进行捕捉异常,如果存在异常,则判断为pass
with pytest.raises(Timeout):
requests.get('https://www.wxwxwx.com', timeout=1)
# 模拟服务器错误
m.get('https://www.wxwxwx.com/api', exc=ConnectionError)
# 发送请求并断言是否抛出了预期的异常
with pytest.raises(ConnectionError):
requests.get('https://www.wxwxwx.com/api')

浙公网安备 33010602011771号