diff --git a/httprunner/api.py b/httprunner/api.py index 0d3393a5..14de03ef 100644 --- a/httprunner/api.py +++ b/httprunner/api.py @@ -221,6 +221,7 @@ class HttpRunner(object): loaded_testcase = loader.loadTestsFromTestCase(TestSequense) setattr(loaded_testcase, "config", config) + setattr(loaded_testcase, "teststeps", testcase.get("teststeps", [])) setattr(loaded_testcase, "runner", test_runner) loaded_testcases.append(loaded_testcase) diff --git a/httprunner/context.py b/httprunner/context.py index 35c42ceb..766aae22 100644 --- a/httprunner/context.py +++ b/httprunner/context.py @@ -110,8 +110,8 @@ class Context(object): """ if level == "testcase": # testcase config request dict has been parsed in parse_tests - self.TESTCASE_SHARED_REQUEST_MAPPING = request_dict - return request_dict + self.TESTCASE_SHARED_REQUEST_MAPPING = copy.deepcopy(request_dict) + return self.TESTCASE_SHARED_REQUEST_MAPPING else: # teststep diff --git a/httprunner/runner.py b/httprunner/runner.py index 3eec4659..7394cb0b 100644 --- a/httprunner/runner.py +++ b/httprunner/runner.py @@ -164,8 +164,8 @@ class Runner(object): self._handle_skip_feature(teststep_dict) # prepare - extractors = teststep_dict.pop("extract", []) or teststep_dict.pop("extractors", []) - validators = teststep_dict.pop("validate", []) or teststep_dict.pop("validators", []) + extractors = teststep_dict.get("extract", []) or teststep_dict.get("extractors", []) + validators = teststep_dict.get("validate", []) or teststep_dict.get("validators", []) parsed_request = self.init_config(teststep_dict, level="teststep") self.context.update_teststep_variables_mapping("request", parsed_request) diff --git a/tests/test_api.py b/tests/test_api.py index 9baf5338..10831744 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -329,6 +329,10 @@ class TestHttpRunner(ApiServerUnittest): os.getcwd(), 'tests/data/demo_parameters.yml') runner = HttpRunner().run(testcase_file_path) summary = runner.summary + self.assertEqual( + summary["details"][0]["in_out"]["in"]["user_agent"], + "iOS/10.3" + ) self.assertTrue(summary["success"]) self.assertEqual(len(summary["details"]), 3 * 2) self.assertEqual(summary["stat"]["testsRun"], 3 * 2)