-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathtests.py
88 lines (67 loc) · 2.68 KB
/
tests.py
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
import datetime
from portale import PrefixedURLSession
session = PrefixedURLSession(
"https://eu.httpbin.org/",
headers={"Authorization": "Auth Token"},
cache_ttl=5
)
def test_set_cache_ttl():
get_thing = session.GETJSONRequest("anything?thing={0}")
assert get_thing.cache_ttl == 5
get_thing = session.GETJSONRequest("anything?thing={0}", cache_ttl=10)
assert get_thing.cache_ttl == 10
get_thing = session.GETJSONRequest("anything?thing={0}", cache_ttl=0)
assert get_thing.cache_ttl == 0
res = get_thing("flask").json()
assert res["args"]["thing"] == "flask"
def test_params_in_url():
get_thing_by_name = session.GETRequest("anything?thing={name}")
resp = get_thing_by_name(name="snake")
assert {"thing":"snake"} == resp.json()['args']
print(resp.json())
def test_passing_params():
get_thing_by_name = session.GETRequest("anything")
resp = get_thing_by_name(params={"thing": "boa"})
assert resp.url.endswith("?thing=boa")
assert {"thing":"boa"} == resp.json()['args']
get_thing_by_name = session.POSTRequest("anything")
resp = get_thing_by_name(params={"thing": "boa"}, a=1)
assert resp.url.endswith("?thing=boa")
assert {"thing":"boa"} == resp.json()['args']
def test_cache_request():
n = 2
cache_ttl = 20
long_request = session.GETJSONRequest("delay/{n}", cache_ttl=cache_ttl)
assert long_request.cache_ttl == cache_ttl
long_request.bust(n=n) # resetting cache to ensure we don't use previous run's data
then = datetime.datetime.now()
long_request(n=n)
now = datetime.datetime.now()
assert (now - then).seconds >= n
for i in range(9):
then = datetime.datetime.now()
long_request(n=n)
now = datetime.datetime.now()
assert (now - then).seconds < n
long_request.bust(n=n)
then = datetime.datetime.now()
long_request(n=n)
now = datetime.datetime.now()
assert (now - then).seconds >= n
assert long_request.cache.metrics["hits"]
def test_post_json():
session = PrefixedURLSession("https://eu.httpbin.org/")
post_req = session.POSTJSONRequest("anything")
data = {"a": 1, "b": 2}
resp = post_req(**data)
assert resp.json()['json'] == data
def test_url_subspost():
session = PrefixedURLSession("https://eu.httpbin.org/")
post_req = session.POSTJSONRequest("anything/{category}")
data = {"name": "The Tipping Point", "ISBN": " 0-316-34662-4"}
resp = post_req(category="books", **data)
assert resp.json()["json"] == data
def test_headers():
get_headers = session.GETRequest("headers")
resp = get_headers()
assert session.headers["Authorization"] == resp.json()["headers"]["Authorization"]