Testing
Testing around http requests often needs a mocked response:
import json
class MockResponse:
def __init__(self, status_code, json_data):
self.status_code = status_code
self.json_data = json_data
def json(self):
return self.json_data
def raise_for_status(self):
pass
@property
def content(self):
return json.dumps(self.json_data).encode('utf-8')While using pytest.mark.paramatrize, I often like naming cases
def paramaterize_cases(cases, default_values={}, fill_none=True, fill_default=False):
"""Create paramaterization from a set of named cases"""
ids = []
argnames = IndexedSet()
if fill_default:
argnames |= IndexedSet(default_values.keys())
case_values = []
for case_id, case_vars in cases:
ids.append(case_id)
argnames |= IndexedSet(case_vars.keys())
case_values.append(case_vars)
argnames = list(argnames)
# Build list of tuples of values
argvalues = [
tuple([
get_from_lists(var, [values, default_values], raise_error=not fill_none)
for var in argnames
])
for values in case_values
]
return {
'argnames': argnames,
'argvalues': argvalues,
'ids': ids,
}Last updated
Was this helpful?