Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/requests/sessions.py
Original file line number Diff line number Diff line change
Expand Up @@ -482,7 +482,7 @@ def prepare_request(self, request):

p = PreparedRequest()
p.prepare(
method=request.method.upper(),
method=(request.method or "GET").upper(),
url=request.url,
files=request.files,
data=request.data,
Expand Down
19 changes: 19 additions & 0 deletions tests/test_requests.py
Original file line number Diff line number Diff line change
Expand Up @@ -1225,6 +1225,25 @@ def test_prepare_request_with_bytestring_url(self):
prep = s.prepare_request(req)
assert prep.url == "https://httpbin.org/"

def test_prepare_request_with_none_method(self):
"""Test that prepare_request handles None method correctly.

When Request.method is None,
prepare_request() should default to "GET" instead of crashing.
"""
# Create a Request without specifying method (defaults to None)
req = requests.Request(url="https://httpbin.org/")
assert req.method is None

s = requests.Session()

# After the fix, this should work and default to GET
prep = s.prepare_request(req)

# Verify the method defaults to GET
assert prep.method == "GET"
assert prep.url == "https://httpbin.org/"

def test_request_with_bytestring_host(self, httpbin):
s = requests.Session()
resp = s.request(
Expand Down