diff --git a/requests/models.py b/requests/models.py index 1a434740..3ec600ec 100644 --- a/requests/models.py +++ b/requests/models.py @@ -220,7 +220,7 @@ class Request(RequestHooksMixin): for (k, v) in list(hooks.items()): self.register_hook(event=k, hook=v) - self.method = to_native_string(method) + self.method = method self.url = url self.headers = headers self.files = files @@ -318,8 +318,9 @@ class PreparedRequest(RequestEncodingMixin, RequestHooksMixin): def prepare_method(self, method): """Prepares the given HTTP method.""" self.method = method - if self.method is not None: - self.method = to_native_string(self.method.upper()) + if self.method is None: + raise ValueError('Request method cannot be "None"') + self.method = to_native_string(self.method).upper() def prepare_url(self, url, params): """Prepares the given HTTP URL.""" diff --git a/test_requests.py b/test_requests.py index c377cc56..a89a7fc0 100755 --- a/test_requests.py +++ b/test_requests.py @@ -1738,6 +1738,16 @@ def test_prepare_unicode_url(): assert_copy(p, p.copy()) +def test_prepare_requires_a_request_method(): + req = Request() + with pytest.raises(ValueError): + req.prepare() + + prepped = PreparedRequest() + with pytest.raises(ValueError): + prepped.prepare() + + def test_urllib3_retries(httpbin): from requests.packages.urllib3.util import Retry s = requests.Session()