gpt4 book ai didi

python - 如何模拟使用 getattr 动态调用的请求方法

转载 作者:行者123 更新时间:2023-11-28 18:23:53 32 4
gpt4 key购买 nike

我有一个使用 getattr 调用请求方法的类:

import requests

class CustomRequests(object):
def __init__(self):
pass

def _do_requests(self, method='GET', url='', expected_status=200):
make_request = getattr(requests, method.lower())
url = url if url else 'http://example.com'

try:
response = make_request(method, url=url)
except response.exceptions.RequestException as exception:
raise exception
if response.status_code != expected_status:
raise ValueError

def get(self, *args, **kwargs):
self._do_requests(method='GET', *args, **kwargs)

我正在尝试像这样使用模拟和响应库来测试 api:

import responses

@responses.activate
def test_get_method(self):
responses.add('GET', url='http://test_this_api.com', status=200)
custom_request = CustomRequest()
response_data = custom_request.get(method='GET')
AssertIsNotNone(response_data)

是否有更好或正确的方法来测试此方法。收到此错误:

    message = message.format(**values)
KeyError: 'method'

最佳答案

无需使用 getattrrequests.getrequests.post 等只是 requests.request 的便捷方法。 ,它允许您将 HTTP 方法作为参数传递:

requests.request('GET', url) # equivalent to requests.get(url)

还有:

关于python - 如何模拟使用 getattr 动态调用的请求方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42933035/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com