我正在编写一些单元测试代码,我想模拟在我的函数中使用的requests
模块:
import requests
def get_employee(id):
resp = requests.get(f'{__BASE_URL}/employee/{id}')
if resp.status_code == 404:
return None
return resp.json()
def test_get_employee(mocker):
get_request_mock = mocker.patch.object(get_employee, "resp")
print(get_request_mock)
get_request_mock.status_code = 200
get_request_mock.json.return_value = {'name': 'awesome-mock'}
resp = get_employee('random-id')
assert resp == {'name': 'awesome-mock'}
您可以使用requests-mock(PyPI),这里有一个用于pytest用法的fixture。
对于您的示例:
from correct.package import __BASE_URL
from requests import HTTPError
def test_get_employee(requests_mock):
test_id = 'random-id'
requests_mock.get(f'{__BASE_URL}/employee/{test_id}', json= {'name': 'awesome-mock'})
resp = get_employee('random-id')
assert resp == {'name': 'awesome-mock'}
def test_absent_employee(requests_mock):
test_id = 'does_not_exist'
requests_mock.get(f'{__BASE_URL}/employee/{test_id}', status_code=404)
with pytest.raises(HTTPError):
resp = get_employee(test_id)
似乎有很多不同的方法可以做到这一点,但我试图只使用sinon,sinon-test,chai/mocha,axios,httpmock模块。我无法成功模拟使用axios进行的GET调用。我希望能够模拟来自axios调用的响应,这样单元测试实际上就不必发出外部API请求。 我尝试过通过创建沙箱来建立一个基本的单元测试,并使用sinon stub来建立一个GET调用并指定预期的响应。我不熟悉JavaS
我在JUnit中使用Mockito,并且我有一个使用RestTemboard向微服务发出请求的方法。 此方法返回一个JSON对象,该对象将在TokenRequestorPayload类中反序列化。 当我执行单元测试时,它们会失败,因为mock不起作用,我得到了一个org.springframework.web.client.ResourceAccessExcure。我怎么能嘲笑我的RestTem板
我正在尝试使用pip安装请求模块,但我不确定我是否做得对。我在windows上打开命令提示符(windows key r,输入“cmd”并按回车键)。我已经安装了pip,但当我在命令提示符下输入“pip安装请求”时,它会说 当我去检查是否安装了pip时,就会出现这种情况 然后,我将python的路径添加到环境变量中,更改顶部和底部,希望命令提示符可以运行python程序。但当我转到命令提示符并键入
在我的views.py中,我有一个函数,它每次使用不同的响应来调用各种requests.get() 在我的测试类中,我想做这样的事情,但无法计算出确切的方法调用 步骤1: 验证响应包含“a response”、“b response”、“c response” 如何完成步骤1(模拟请求模块)?
问题内容: 我有与请求对象或用户对象进行交互的Django代码。例如: 如果要使用django python shell进行测试或在单元测试中进行测试,您将在其中传递什么?这里只是一个User对象即可,但是对模拟请求对象的需求也经常出现。 对于外壳或单元测试: 您如何嘲笑用户? 您如何模拟请求? 问题答案: 对于请求,我将使用Django随附的RequestFactory。 对于用户,我将按照@o
问题内容: 我正在做一个项目,其中我的解析器 窃取了 有关特定站点上每个视频的数据,并将其保存到我的数据库中。除了指向隐藏视频的完整链接之外,我已完成所有工作。 有一个播放器,它会自动从页面加载开始。我发现启动播放器的JavaScript代码: 通话后,因此,如果没有错误发现它开始使用播放器 的文件名 从 响应 。那就是我所需要的。 我重新检查了 Live HTTP标头中 的呼叫: 因此它使用特定