TestTestServer Class — requests Architecture
Architecture documentation for the TestTestServer class in test_testserver.py from the requests codebase.
Entity Profile
Dependency Diagram
graph TD ba85c801_ef4e_5a92_0e3d_07f791306eaf["TestTestServer"] 6cf98a23_4f9c_9f92_66f0_e3af57898d30["test_testserver.py"] ba85c801_ef4e_5a92_0e3d_07f791306eaf -->|defined in| 6cf98a23_4f9c_9f92_66f0_e3af57898d30 80931751_f1a4_cfa7_6f2d_ebe95e38952b["test_basic()"] ba85c801_ef4e_5a92_0e3d_07f791306eaf -->|method| 80931751_f1a4_cfa7_6f2d_ebe95e38952b ce956278_be27_d467_813f_9645ce71ddcd["test_server_closes()"] ba85c801_ef4e_5a92_0e3d_07f791306eaf -->|method| ce956278_be27_d467_813f_9645ce71ddcd 762416f7_7463_06ad_e8f9_cba074219bb4["test_text_response()"] ba85c801_ef4e_5a92_0e3d_07f791306eaf -->|method| 762416f7_7463_06ad_e8f9_cba074219bb4 75f70d20_9345_0efa_7b23_91eb13516d2f["test_basic_response()"] ba85c801_ef4e_5a92_0e3d_07f791306eaf -->|method| 75f70d20_9345_0efa_7b23_91eb13516d2f e036e1c8_f92c_b88a_ec18_21c87dc94d92["test_basic_waiting_server()"] ba85c801_ef4e_5a92_0e3d_07f791306eaf -->|method| e036e1c8_f92c_b88a_ec18_21c87dc94d92 ae06816e_1ae0_467c_b481_c7aab860c248["test_multiple_requests()"] ba85c801_ef4e_5a92_0e3d_07f791306eaf -->|method| ae06816e_1ae0_467c_b481_c7aab860c248 c1765a3d_a7ab_9909_31bc_bebe7315e225["test_request_recovery()"] ba85c801_ef4e_5a92_0e3d_07f791306eaf -->|method| c1765a3d_a7ab_9909_31bc_bebe7315e225 e616c078_b7ed_6a00_18b4_cb75d00ac7b9["test_requests_after_timeout_are_not_received()"] ba85c801_ef4e_5a92_0e3d_07f791306eaf -->|method| e616c078_b7ed_6a00_18b4_cb75d00ac7b9 aaa54bb3_9b7e_3fd2_c5e3_f5cc1b9d84f7["test_request_recovery_with_bigger_timeout()"] ba85c801_ef4e_5a92_0e3d_07f791306eaf -->|method| aaa54bb3_9b7e_3fd2_c5e3_f5cc1b9d84f7 260beb70_b423_fb75_85f4_0485194aea25["test_server_finishes_on_error()"] ba85c801_ef4e_5a92_0e3d_07f791306eaf -->|method| 260beb70_b423_fb75_85f4_0485194aea25 7083856f_6b51_4436_b302_a61afa1a3f9b["test_server_finishes_when_no_connections()"] ba85c801_ef4e_5a92_0e3d_07f791306eaf -->|method| 7083856f_6b51_4436_b302_a61afa1a3f9b
Relationship Graph
Source Code
tests/test_testserver.py lines 11–165
class TestTestServer:
def test_basic(self):
"""messages are sent and received properly"""
question = b"success?"
answer = b"yeah, success"
def handler(sock):
text = sock.recv(1000)
assert text == question
sock.sendall(answer)
with Server(handler) as (host, port):
sock = socket.socket()
sock.connect((host, port))
sock.sendall(question)
text = sock.recv(1000)
assert text == answer
sock.close()
def test_server_closes(self):
"""the server closes when leaving the context manager"""
with Server.basic_response_server() as (host, port):
sock = socket.socket()
sock.connect((host, port))
sock.close()
with pytest.raises(socket.error):
new_sock = socket.socket()
new_sock.connect((host, port))
def test_text_response(self):
"""the text_response_server sends the given text"""
server = Server.text_response_server(
"HTTP/1.1 200 OK\r\nContent-Length: 6\r\n\r\nroflol"
)
with server as (host, port):
r = requests.get(f"http://{host}:{port}")
assert r.status_code == 200
assert r.text == "roflol"
assert r.headers["Content-Length"] == "6"
def test_basic_response(self):
"""the basic response server returns an empty http response"""
with Server.basic_response_server() as (host, port):
r = requests.get(f"http://{host}:{port}")
assert r.status_code == 200
assert r.text == ""
assert r.headers["Content-Length"] == "0"
def test_basic_waiting_server(self):
"""the server waits for the block_server event to be set before closing"""
block_server = threading.Event()
with Server.basic_response_server(wait_to_close_event=block_server) as (
host,
port,
):
sock = socket.socket()
sock.connect((host, port))
sock.sendall(b"send something")
time.sleep(2.5)
sock.sendall(b"still alive")
block_server.set() # release server block
def test_multiple_requests(self):
"""multiple requests can be served"""
requests_to_handle = 5
server = Server.basic_response_server(requests_to_handle=requests_to_handle)
with server as (host, port):
server_url = f"http://{host}:{port}"
for _ in range(requests_to_handle):
r = requests.get(server_url)
assert r.status_code == 200
# the (n+1)th request fails
with pytest.raises(requests.exceptions.ConnectionError):
Domain
Defined In
Source
Frequently Asked Questions
What is the TestTestServer class?
TestTestServer is a class in the requests codebase, defined in tests/test_testserver.py.
Where is TestTestServer defined?
TestTestServer is defined in tests/test_testserver.py at line 11.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free