@@ -173,7 +173,7 @@ def test_endpoint_error(self, client):
173173 }
174174 assert result .json == expected_data
175175
176- def test_valid_response_object (self , client ):
176+ def test_response_object_valid (self , client ):
177177 def view_response_callable (* args , ** kwargs ):
178178 from flask .globals import request
179179
@@ -197,7 +197,28 @@ def view_response_callable(*args, **kwargs):
197197 "data" : "data" ,
198198 }
199199
200- def test_valid_tuple_str (self , client ):
200+ @pytest .mark .parametrize (
201+ "response,expected_status,expected_headers" ,
202+ [
203+ # ((body, status, headers)) response tuple
204+ (
205+ ("Not found" , 404 , {"X-Rate-Limit" : "12" }),
206+ 404 ,
207+ {"X-Rate-Limit" : "12" },
208+ ),
209+ # (body, status) response tuple
210+ (("Not found" , 404 ), 404 , {}),
211+ # (body, headers) response tuple
212+ (
213+ ({"data" : "data" }, {"X-Rate-Limit" : "12" }),
214+ 200 ,
215+ {"X-Rate-Limit" : "12" },
216+ ),
217+ ],
218+ )
219+ def test_tuple_valid (
220+ self , client , response , expected_status , expected_headers
221+ ):
201222 def view_response_callable (* args , ** kwargs ):
202223 from flask .globals import request
203224
@@ -208,35 +229,16 @@ def view_response_callable(*args, **kwargs):
208229 "id" : 12 ,
209230 }
210231 )
211- return ( "Not found" , 404 )
232+ return response
212233
213234 self .view_response_callable = view_response_callable
214235
215236 result = client .get ("/browse/12/" )
216237
217- assert result .status_code == 404
218- assert result .text == "Not found"
219-
220- def test_valid_tuple_dict (self , client ):
221- def view_response_callable (* args , ** kwargs ):
222- from flask .globals import request
223-
224- assert request .openapi
225- assert not request .openapi .errors
226- assert request .openapi .parameters == Parameters (
227- path = {
228- "id" : 12 ,
229- }
230- )
231- body = dict (data = "data" )
232- headers = {"X-Rate-Limit" : "12" }
233- return (body , headers )
234-
235- self .view_response_callable = view_response_callable
236-
237- result = client .get ("/browse/12/" )
238-
239- assert result .status_code == 200
240- assert result .json == {
241- "data" : "data" ,
242- }
238+ assert result .status_code == expected_status
239+ expected_body = response [0 ]
240+ if isinstance (expected_body , str ):
241+ assert result .text == expected_body
242+ else :
243+ assert result .json == expected_body
244+ assert dict (result .headers ).items () >= expected_headers .items ()
0 commit comments