1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
|
import requests, time
from threading import Event
from httpretty import httprettified
from httpretty import HTTPretty
@httprettified(allow_net_connect=False)
def test_read_timeout():
event = Event()
wait_seconds = 10
connect_timeout = 0.1
read_timeout = 0.1
def my_callback(request, url, headers):
event.wait(wait_seconds)
return 200, headers, "Received"
HTTPretty.register_uri(
HTTPretty.GET, "http://example.com",
body=my_callback
)
requested_at = time.time()
try:
requests.get(
"http://example.com",
timeout=(connect_timeout, read_timeout))
except requests.exceptions.ReadTimeout:
pass
event_set_at = time.time()
event.set()
now = time.time()
assert now - event_set_at < 0.2
total_duration = now - requested_at
assert total_duration < 0.2
|