forked from csernazs/pytest-httpserver
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_wait.py
More file actions
72 lines (56 loc) · 3.03 KB
/
test_wait.py
File metadata and controls
72 lines (56 loc) · 3.03 KB
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
import requests
from pytest import approx, raises
from pytest_httpserver import HTTPServer
def test_wait_success(httpserver: HTTPServer):
waiting_timeout = 0.1
with httpserver.wait(stop_on_nohandler=False, timeout=waiting_timeout) as waiting:
requests.get(httpserver.url_for("/foobar"))
httpserver.expect_oneshot_request("/foobar").respond_with_data("OK foobar")
requests.get(httpserver.url_for("/foobar"))
assert waiting.result
httpserver.expect_oneshot_request("/foobar").respond_with_data("OK foobar")
httpserver.expect_oneshot_request("/foobaz").respond_with_data("OK foobaz")
with httpserver.wait(timeout=waiting_timeout) as waiting:
requests.get(httpserver.url_for("/foobar"))
requests.get(httpserver.url_for("/foobaz"))
assert waiting.result
def test_wait_unexpected_request(httpserver: HTTPServer):
def make_unexpected_request_and_wait() -> None:
with raises(AssertionError) as error:
waiting_timeout = 0.1
with httpserver.wait(raise_assertions=True, stop_on_nohandler=True, timeout=waiting_timeout) as waiting:
requests.get(httpserver.url_for("/foobaz"))
assert not waiting.result
no_handler_text = 'No handler found for request'
assert no_handler_text in str(error.value)
make_unexpected_request_and_wait()
httpserver.expect_ordered_request("/foobar").respond_with_data("OK foobar")
httpserver.expect_ordered_request("/foobaz").respond_with_data("OK foobaz")
make_unexpected_request_and_wait()
def test_wait_timeout(httpserver: HTTPServer):
httpserver.expect_oneshot_request("/foobar").respond_with_data("OK foobar")
httpserver.expect_oneshot_request("/foobaz").respond_with_data("OK foobaz")
waiting_timeout = 1
with raises(AssertionError) as error:
with httpserver.wait(raise_assertions=True, timeout=waiting_timeout) as waiting:
requests.get(httpserver.url_for("/foobar"))
assert not waiting.result
waiting_time_error = 0.1
assert waiting.elapsed_time == approx(waiting_timeout, abs=waiting_time_error)
assert 'Wait timeout occurred, but some handlers left' in str(error.value)
def test_wait_raise_assertion_false(httpserver: HTTPServer):
waiting_timeout = 0.1
try:
with httpserver.wait(raise_assertions=False, stop_on_nohandler=True, timeout=waiting_timeout) as waiting:
requests.get(httpserver.url_for("/foobaz"))
except AssertionError as error:
raise AssertionError('raise_assertions was set to False, but assertion was raised: {}'.format(error))
assert not waiting.result
try:
with httpserver.wait(raise_assertions=False, stop_on_nohandler=True, timeout=waiting_timeout) as waiting:
pass
except AssertionError as error:
raise AssertionError('raise_assertions was set to False, but assertion was raised: {}'.format(error))
assert not waiting.result
waiting_time_error = 0.1
assert waiting.elapsed_time == approx(waiting_timeout, abs=waiting_time_error)