2020sys .path .insert (0 , os .path .realpath (os .path .join (os .path .dirname (__file__ ), ".." )))
2121
2222
23- @mock .patch ("requests.Session" , mokcs .MockSession )
24- def get_forecast_sync () -> Forecast :
25- pirate_weather = PirateWeather ("api_key" )
23+ @pytest .fixture
24+ def forecast_sync ():
25+ with mock .patch ("requests.Session" , mokcs .MockSession ):
26+ pirate_weather = PirateWeather ("api_key" )
27+ return pirate_weather .get_forecast (DATA ["latitude" ], DATA ["longitude" ])
2628
27- return pirate_weather .get_forecast (DATA ["latitude" ], DATA ["longitude" ])
2829
29-
30- def get_forecast_async ():
30+ @ pytest . fixture
31+ def forecast_async ():
3132 async def get_async_data ():
3233 pirate_weather = PirateWeatherAsync ("api_key" )
3334 with aioresponses .aioresponses () as resp :
@@ -45,15 +46,21 @@ async def get_async_data():
4546 return asyncio .run (get_async_data ())
4647
4748
48- @pytest .mark .parametrize ("forecast" , [get_forecast_sync (), get_forecast_async ()])
49+ @pytest .fixture (params = ["sync" , "async" ])
50+ def forecast (request , forecast_sync , forecast_async ):
51+ if request .param == "sync" :
52+ return forecast_sync
53+ else :
54+ return forecast_async
55+
56+
4957def test_forecast_base_fields (forecast ):
5058 assert isinstance (forecast , Forecast )
5159 assert forecast .latitude == DATA ["latitude" ]
5260 assert forecast .longitude == DATA ["longitude" ]
5361 assert forecast .timezone == DATA ["timezone" ]
5462
5563
56- @pytest .mark .parametrize ("forecast" , [get_forecast_sync (), get_forecast_async ()])
5764def test_forecast_currently (forecast ):
5865 f_item , d_item = forecast .currently , copy .deepcopy (DATA ["currently" ])
5966 for key in d_item :
@@ -64,7 +71,6 @@ def test_forecast_currently(forecast):
6471 assert getattr (f_item , forecast_key ) == d_item [key ]
6572
6673
67- @pytest .mark .parametrize ("forecast" , [get_forecast_sync (), get_forecast_async ()])
6874def test_forecast_minutely (forecast ):
6975 assert forecast .minutely .summary == DATA ["minutely" ]["summary" ]
7076 assert forecast .minutely .icon == DATA ["minutely" ]["icon" ]
@@ -80,7 +86,6 @@ def test_forecast_minutely(forecast):
8086 assert getattr (f_item , forecast_key ) == d_item [key ]
8187
8288
83- @pytest .mark .parametrize ("forecast" , [get_forecast_sync (), get_forecast_async ()])
8489def test_forecast_hourly (forecast ):
8590 assert forecast .hourly .summary == DATA ["hourly" ]["summary" ]
8691 assert forecast .hourly .icon == DATA ["hourly" ]["icon" ]
@@ -96,7 +101,6 @@ def test_forecast_hourly(forecast):
96101 assert getattr (f_item , forecast_key ) == d_item [key ]
97102
98103
99- @pytest .mark .parametrize ("forecast" , [get_forecast_sync (), get_forecast_async ()])
100104def test_forecast_daily (forecast ):
101105 assert forecast .daily .summary == DATA ["daily" ]["summary" ]
102106 assert forecast .daily .icon == DATA ["daily" ]["icon" ]
@@ -112,7 +116,6 @@ def test_forecast_daily(forecast):
112116 assert getattr (f_item , forecast_key ) == d_item [key ]
113117
114118
115- @pytest .mark .parametrize ("forecast" , [get_forecast_sync (), get_forecast_async ()])
116119def test_forecast_day_night (forecast ):
117120 assert forecast .day_night .summary == DATA ["day_night" ]["summary" ]
118121 assert forecast .day_night .icon == DATA ["day_night" ]["icon" ]
@@ -128,7 +131,6 @@ def test_forecast_day_night(forecast):
128131 assert getattr (f_item , forecast_key ) == d_item [key ]
129132
130133
131- @pytest .mark .parametrize ("forecast" , [get_forecast_sync (), get_forecast_async ()])
132134def test_forecast_alerts (forecast ):
133135 for f_item , d_item in zip (
134136 forecast .alerts , copy .deepcopy (DATA ["alerts" ]), strict = False
@@ -141,7 +143,6 @@ def test_forecast_alerts(forecast):
141143 assert getattr (f_item , forecast_key ) == d_item [key ]
142144
143145
144- @pytest .mark .parametrize ("forecast" , [get_forecast_sync (), get_forecast_async ()])
145146def test_forecast_flags (forecast ):
146147 d_item = copy .deepcopy (DATA ["flags" ])
147148 f_item = forecast .flags
0 commit comments