forked from CopilotKit/CopilotKit
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_get_weather.py
More file actions
59 lines (41 loc) · 1.71 KB
/
Copy pathtest_get_weather.py
File metadata and controls
59 lines (41 loc) · 1.71 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
import pytest
from tools import get_weather_impl
def test_returns_all_required_fields():
result = get_weather_impl("Tokyo")
assert "city" in result
assert "temperature" in result
assert "humidity" in result
assert "wind_speed" in result
assert "feels_like" in result
assert "conditions" in result
def test_city_name_passed_through():
result = get_weather_impl("San Francisco")
assert result["city"] == "San Francisco"
def test_deterministic_for_same_city():
r1 = get_weather_impl("Tokyo")
r2 = get_weather_impl("Tokyo")
assert r1["temperature"] == r2["temperature"]
assert r1["conditions"] == r2["conditions"]
def test_different_cities_produce_different_results():
r1 = get_weather_impl("Tokyo")
r2 = get_weather_impl("London")
# At least one field should differ (statistically guaranteed with seeded RNG)
assert r1 != r2
def test_temperature_in_valid_range():
result = get_weather_impl("TestCity")
assert 20 <= result["temperature"] <= 95
def test_humidity_in_valid_range():
result = get_weather_impl("TestCity")
assert 30 <= result["humidity"] <= 90
def test_case_insensitivity():
r_lower = get_weather_impl("tokyo")
r_upper = get_weather_impl("TOKYO")
r_mixed = get_weather_impl("Tokyo")
assert r_lower["temperature"] == r_upper["temperature"] == r_mixed["temperature"]
assert r_lower["conditions"] == r_upper["conditions"] == r_mixed["conditions"]
def test_feels_like_within_five_of_temperature():
result = get_weather_impl("TestCity")
assert abs(result["feels_like"] - result["temperature"]) <= 5
def test_wind_speed_in_valid_range():
result = get_weather_impl("TestCity")
assert 2 <= result["wind_speed"] <= 30