【发布时间】:2018-11-14 19:11:47
【问题描述】:
我正在尝试使用 requests_mock 模拟获取请求,但它似乎并不正确。
我的函数调用文件lookup.py中定义的第三方API:
from botocore.vendored import requests
def get_data():
url = 'https://abc.something.com/datapackage'
url_params={
'v': 2,
'auth_apikey':'xyz'
}
resp = requests.get(url, params=url_params)
return resp.json()
我正在使用py.test 来运行我的测试并在我的测试文件中。我有一个固定装置:
import requests_mock
import requests, pytest
from lookup import get_data
@pytest.fixture
def req_mock(request):
m = requests_mock.Mocker()
m.start()
request.addfinalizer(m.stop)
return m
def test_api_gets_data(req_mock):
sample={
'key1':123
}
lookup_url = 'https://abc.something.com/datapackage'
query_params = {
'v': 2,
'auth_apikey':'xyz'
}
req_mock.get(lookup_url, json=sample)
resp = get_data()
显然,requests_mock 无法使用与get 函数中的请求相同的会话,因此它不会被嘲笑。
有没有更好的方法来做到这一点?
我正在使用 Python 3.6、requests 2.18、requests-mock 1.52 和 pytest 3.0.7。
【问题讨论】:
-
this 为我工作
-
对不起,我刚刚在创建这篇文章时意识到我使用了错误的导入。我正在尝试使用来自 botocore 的请求,它是 AWS 包和 boto3 的核心
标签: python python-requests boto3