log exception request_type and name for locust stat

This commit is contained in:
debugtalk
2018-12-11 21:48:14 +08:00
parent acfca8c07f
commit d586d7cb82
2 changed files with 15 additions and 11 deletions

View File

@@ -284,18 +284,19 @@ class Runner(object):
tests = testcase_dict.get("teststeps", []) tests = testcase_dict.get("teststeps", [])
try: for index, test_dict in enumerate(tests):
for index, test_dict in enumerate(tests): try:
test_runner.run_test(test_dict) test_runner.run_test(test_dict)
except Exception:
# log exception request_type and name for locust stat
self.exception_request_type = test_runner.exception_request_type
self.exception_name = test_runner.exception_name
raise
finally:
_meta_datas = test_runner.meta_datas _meta_datas = test_runner.meta_datas
self.meta_datas.append(_meta_datas) self.meta_datas.append(_meta_datas)
self.session_context.update_session_variables(test_runner.extract_sessions()) self.session_context.update_session_variables(test_runner.extract_sessions())
except Exception as ex:
meta_datas = test_runner.meta_datas
self.meta_datas.append(meta_datas)
raise
def run_test(self, test_dict): def run_test(self, test_dict):
""" run single teststep of testcase. """ run single teststep of testcase.
@@ -331,7 +332,7 @@ class Runner(object):
""" """
self.meta_datas = None self.meta_datas = None
if "config" in test_dict: if "teststeps" in test_dict:
# nested testcase # nested testcase
self._run_testcase(test_dict) self._run_testcase(test_dict)
else: else:
@@ -339,6 +340,9 @@ class Runner(object):
try: try:
self._run_test(test_dict) self._run_test(test_dict)
except Exception: except Exception:
# log exception request_type and name for locust stat
self.exception_request_type = test_dict["request"]["method"]
self.exception_name = test_dict.get("name")
raise raise
finally: finally:
self.meta_datas = self.__get_test_data() self.meta_datas = self.__get_test_data()

View File

@@ -24,8 +24,8 @@ class WebPageTasks(TaskSet):
self.test_runner.run_test(test_dict) self.test_runner.run_test(test_dict)
except (AssertionError, MyBaseError, MyBaseFailure) as ex: except (AssertionError, MyBaseError, MyBaseFailure) as ex:
request_failure.fire( request_failure.fire(
request_type=test_dict.get("request", {}).get("method"), request_type=self.test_runner.exception_request_type,
name=test_dict.get("name"), name=self.test_runner.exception_name,
response_time=0, response_time=0,
exception=ex exception=ex
) )