remove project_mapping from parse_tests result

This commit is contained in:
debugtalk
2019-04-08 20:52:14 +08:00
parent a9e836c369
commit 233f54d315
8 changed files with 80 additions and 114 deletions

View File

@@ -36,11 +36,11 @@ class HttpRunner(object):
if log_file:
logger.setup_logger(log_level, log_file)
def _add_tests(self, tests_mapping):
def _add_tests(self, testcases):
""" initialize testcase with Runner() and add to test suite.
Args:
tests_mapping (dict): project info and testcases list.
testcases (list): testcases list.
Returns:
unittest.TestSuite()
@@ -74,7 +74,7 @@ class HttpRunner(object):
return test
test_suite = unittest.TestSuite()
for testcase in tests_mapping["testcases"]:
for testcase in testcases:
config = testcase.get("config", {})
test_runner = runner.Runner(config)
TestSequense = type('TestSequense', (unittest.TestCase,), {})
@@ -162,19 +162,20 @@ class HttpRunner(object):
def run_tests(self, tests_mapping):
""" run testcase/testsuite data
"""
project_mapping = tests_mapping.get("project_mapping", {})
if self.save_tests:
utils.dump_tests(tests_mapping, "loaded")
utils.dump_logs(tests_mapping, project_mapping, "loaded")
# parse tests
self.exception_stage = "parse tests"
parsed_tests_mapping = parser.parse_tests(tests_mapping)
parsed_testcases = parser.parse_tests(tests_mapping)
if self.save_tests:
utils.dump_tests(parsed_tests_mapping, "parsed")
utils.dump_logs(parsed_testcases, project_mapping, "parsed")
# add tests to test suite
self.exception_stage = "add tests to test suite"
test_suite = self._add_tests(parsed_tests_mapping)
test_suite = self._add_tests(parsed_testcases)
# run test suite
self.exception_stage = "run test suite"
@@ -189,7 +190,7 @@ class HttpRunner(object):
report.stringify_summary(self._summary)
if self.save_tests:
utils.dump_summary(self._summary, tests_mapping["project_mapping"])
utils.dump_logs(self._summary, project_mapping, "summary")
report_path = report.render_html_report(
self._summary,
@@ -289,11 +290,11 @@ def prepare_locust_tests(path):
"""
tests_mapping = loader.load_tests(path)
parsed_tests_mapping = parser.parse_tests(tests_mapping)
testcases = parser.parse_tests(tests_mapping)
locust_tests = []
for testcase in parsed_tests_mapping["testcases"]:
for testcase in testcases:
testcase_weight = testcase.get("config", {}).pop("weight", 1)
for _ in range(testcase_weight):
locust_tests.append(testcase)

View File

@@ -890,7 +890,7 @@ def __prepare_testcase_tests(tests, config, project_mapping):
extract_mapping = utils.ensure_mapping_format(test_dict["extract"])
session_variables.update(extract_mapping)
check_variables_set = set(test_dict["variables"].keys()) \
check_variables_set = set(test_dict.get("variables", {}).keys()) \
| set(session_variables.keys()) | {"request", "response"}
# convert validators to lazy function
@@ -1142,10 +1142,7 @@ def parse_tests(tests_mapping):
"""
project_mapping = tests_mapping.get("project_mapping", {})
parsed_tests_mapping = {
"project_mapping": project_mapping,
"testcases": []
}
testcases = []
for test_type in tests_mapping:
@@ -1155,12 +1152,12 @@ def parse_tests(tests_mapping):
for testsuite in testsuites:
parsed_testcases = _parse_testsuite(testsuite, project_mapping)
for parsed_testcase in parsed_testcases:
parsed_tests_mapping["testcases"].append(parsed_testcase)
testcases.append(parsed_testcase)
elif test_type == "testcases":
for testcase in tests_mapping["testcases"]:
parsed_testcase = _parse_testcase(testcase, project_mapping)
parsed_tests_mapping["testcases"].append(parsed_testcase)
testcases.append(parsed_testcase)
elif test_type == "apis":
# encapsulate api as a testcase
@@ -1169,6 +1166,6 @@ def parse_tests(tests_mapping):
"teststeps": [api_content]
}
parsed_testcase = _parse_testcase(testcase, project_mapping)
parsed_tests_mapping["testcases"].append(parsed_testcase)
testcases.append(parsed_testcase)
return parsed_tests_mapping
return testcases

View File

@@ -36,8 +36,8 @@ class Runner(object):
]
}
>>> parsed_tests_mapping = parser.parse_tests(tests_mapping)
>>> parsed_testcase = parsed_tests_mapping["testcases"][0]
>>> testcases = parser.parse_tests(tests_mapping)
>>> parsed_testcase = testcases[0]
>>> test_runner = runner.Runner(parsed_testcase["config"])
>>> test_runner.run_test(parsed_testcase["teststeps"][0])

View File

@@ -579,46 +579,18 @@ def _prepare_dump_info(project_mapping, tag_name):
return pwd_dir_path, dump_file_name
def dump_tests(tests_mapping, tag_name):
""" dump loaded/parsed tests data (except functions) to json file.
def dump_logs(json_data, project_mapping, tag_name):
""" dump tests data to json file.
the dumped file is located in PWD/logs folder.
Args:
tests_mapping (dict): data to dump
tag_name (str): tag name, loaded/parsed
json_data (list/dict): json data to dump
project_mapping (dict): project info
tag_name (str): tag name, loaded/parsed/summary
"""
project_mapping = tests_mapping.get("project_mapping", {})
pwd_dir_path, dump_file_name = _prepare_dump_info(project_mapping, tag_name)
tests_to_dump = {
"project_mapping": {}
}
for key in project_mapping:
if key == "functions" and project_mapping["functions"]:
tests_to_dump["project_mapping"]["debugtalk.py"] = {
"path": os.path.join(pwd_dir_path, "debugtalk.py"),
"functions": project_mapping["functions"]
}
else:
tests_to_dump["project_mapping"][key] = project_mapping[key]
if "api" in tests_mapping:
tests_to_dump["api"] = tests_mapping["api"]
elif "testcases" in tests_mapping:
tests_to_dump["testcases"] = tests_mapping["testcases"]
elif "testsuites" in tests_mapping:
tests_to_dump["testsuites"] = tests_mapping["testsuites"]
dump_json_file(tests_to_dump, pwd_dir_path, dump_file_name)
def dump_summary(summary, project_mapping):
""" dump test result summary to json file.
"""
pwd_dir_path, dump_file_name = _prepare_dump_info(project_mapping, "summary")
dump_json_file(summary, pwd_dir_path, dump_file_name)
dump_json_file(json_data, pwd_dir_path, dump_file_name)
def get_python2_retire_msg():