mirror of
https://github.com/httprunner/httprunner.git
synced 2026-07-07 15:31:23 +08:00
refactor: extract elapsed
This commit is contained in:
@@ -99,13 +99,19 @@ class ResponseObject(object):
|
|||||||
|
|
||||||
# elapsed
|
# elapsed
|
||||||
elif top_query == "elapsed":
|
elif top_query == "elapsed":
|
||||||
if sub_query in ["days", "seconds", "microseconds"]:
|
available_attributes = u"available attributes: days, seconds, microseconds, total_seconds"
|
||||||
|
if not sub_query:
|
||||||
|
err_msg = u"ParamsError: elapsed is datetime.timedelta instance, attribute should also be specified!\n"
|
||||||
|
err_msg += available_attributes
|
||||||
|
logger.log_error(err_msg)
|
||||||
|
raise exceptions.ParamsError(err_msg)
|
||||||
|
elif sub_query in ["days", "seconds", "microseconds"]:
|
||||||
return getattr(self.elapsed, sub_query)
|
return getattr(self.elapsed, sub_query)
|
||||||
elif sub_query == "total_seconds":
|
elif sub_query == "total_seconds":
|
||||||
return self.elapsed.total_seconds()
|
return self.elapsed.total_seconds()
|
||||||
else:
|
else:
|
||||||
err_msg = "{}: {} is not valid timedelta attribute.\n".format(field, sub_query)
|
err_msg = "ParamsError: {} is not valid datetime.timedelta attribute.\n".format(sub_query)
|
||||||
err_msg += "elapsed only support attributes: days, seconds, microseconds, total_seconds.\n"
|
err_msg += available_attributes
|
||||||
logger.log_error(err_msg)
|
logger.log_error(err_msg)
|
||||||
raise exceptions.ParamsError(err_msg)
|
raise exceptions.ParamsError(err_msg)
|
||||||
|
|
||||||
|
|||||||
@@ -84,6 +84,47 @@ class TestResponse(ApiServerUnittest):
|
|||||||
with self.assertRaises(exceptions.ParamsError):
|
with self.assertRaises(exceptions.ParamsError):
|
||||||
resp_obj.extract_response(extract_binds_list)
|
resp_obj.extract_response(extract_binds_list)
|
||||||
|
|
||||||
|
def test_extract_response_elapsed(self):
|
||||||
|
resp = requests.post(
|
||||||
|
url="http://127.0.0.1:3458/anything",
|
||||||
|
json={
|
||||||
|
'success': False,
|
||||||
|
"person": {
|
||||||
|
"name": {
|
||||||
|
"first_name": "Leo",
|
||||||
|
"last_name": "Lee",
|
||||||
|
},
|
||||||
|
"age": 29,
|
||||||
|
"cities": ["Guangzhou", "Shenzhen"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
resp_obj = response.ResponseObject(resp)
|
||||||
|
|
||||||
|
extract_binds_list = [
|
||||||
|
{"resp_elapsed": "elapsed"}
|
||||||
|
]
|
||||||
|
with self.assertRaises(exceptions.ParamsError):
|
||||||
|
resp_obj.extract_response(extract_binds_list)
|
||||||
|
|
||||||
|
extract_binds_list = [
|
||||||
|
{"resp_elapsed_microseconds": "elapsed.microseconds"},
|
||||||
|
{"resp_elapsed_seconds": "elapsed.seconds"},
|
||||||
|
{"resp_elapsed_days": "elapsed.days"},
|
||||||
|
{"resp_elapsed_total_seconds": "elapsed.total_seconds"}
|
||||||
|
]
|
||||||
|
extract_binds_dict = resp_obj.extract_response(extract_binds_list)
|
||||||
|
self.assertGreater(extract_binds_dict["resp_elapsed_microseconds"], 1000)
|
||||||
|
self.assertEqual(extract_binds_dict["resp_elapsed_seconds"], 0)
|
||||||
|
self.assertEqual(extract_binds_dict["resp_elapsed_days"], 0)
|
||||||
|
self.assertGreater(extract_binds_dict["resp_elapsed_total_seconds"], 0)
|
||||||
|
|
||||||
|
extract_binds_list = [
|
||||||
|
{"resp_elapsed": "elapsed.years"}
|
||||||
|
]
|
||||||
|
with self.assertRaises(exceptions.ParamsError):
|
||||||
|
resp_obj.extract_response(extract_binds_list)
|
||||||
|
|
||||||
def test_extract_response_json(self):
|
def test_extract_response_json(self):
|
||||||
resp = requests.post(
|
resp = requests.post(
|
||||||
url="http://127.0.0.1:3458/anything",
|
url="http://127.0.0.1:3458/anything",
|
||||||
|
|||||||
Reference in New Issue
Block a user