print testcase output

This commit is contained in:
debugtalk
2019-01-24 17:10:35 +08:00
parent c73a708307
commit 7beedf378a
3 changed files with 43 additions and 61 deletions

View File

@@ -145,10 +145,7 @@ class HttpRunner(object):
summary["success"] &= testcase_summary["success"]
testcase_summary["name"] = testcase.config.get("name")
in_out = utils.get_testcase_io(testcase)
utils.print_io(in_out)
testcase_summary["in_out"] = in_out
testcase_summary["in_out"] = utils.get_testcase_io(testcase)
report.aggregate_stat(summary["stat"]["teststeps"], testcase_summary["stat"])
report.aggregate_stat(summary["time"], testcase_summary["time"])

View File

@@ -309,7 +309,9 @@ class Runner(object):
_meta_datas = test_runner.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_output(test_runner.output)
)
def run_test(self, test_dict):
""" run single teststep of testcase.
@@ -360,11 +362,6 @@ class Runner(object):
finally:
self.meta_datas = self.__get_test_data()
def extract_sessions(self):
"""
"""
return self.extract_output(self.output)
def extract_output(self, output_variables_list):
""" extract output variables
"""
@@ -381,4 +378,5 @@ class Runner(object):
output[variable] = variables_mapping[variable]
utils.print_info(output)
return output

View File

@@ -433,13 +433,12 @@ def extend_variables(raw_variables, override_variables):
def get_testcase_io(testcase):
""" get testcase input(variables) and output.
""" get and print testcase input(variables) and output.
Args:
testcase (unittest.suite.TestSuite): corresponding to one YAML/JSON file, it has been set two attributes:
config: parsed config block
runner: initialized runner.Runner() with config
Returns:
dict: input(variables) and output mapping.
@@ -447,73 +446,61 @@ def get_testcase_io(testcase):
test_runner = testcase.runner
variables = testcase.config.get("variables", {})
output_list = testcase.config.get("output", [])
output_mapping = test_runner.extract_output(output_list)
return {
"in": variables,
"out": test_runner.extract_output(output_list)
"out": output_mapping
}
def print_io(in_out):
""" print input(variables) and output.
def print_info(info_mapping):
""" print info in mapping.
Args:
in_out (dict): input(variables) and output mapping.
info_mapping (dict): input(variables) or output mapping.
Examples:
>>> in_out = {
"in": {
"var_a": "hello",
"var_b": "world"
},
"out": {
"status_code": 500
}
>>> info_mapping = {
"var_a": "hello",
"var_b": "world"
}
>>> print_io(in_out)
================== Variables & Output ==================
Type | Variable : Value
------ | ---------------- : ---------------------------
Var | var_a : hello
Var | var_b : world
Out | status_code : 500
--------------------------------------------------------
>>> info_mapping = {
"status_code": 500
}
>>> print_info(info_mapping)
==================== Output ====================
Key : Value
---------------- : ----------------------------
var_a : hello
var_b : world
------------------------------------------------
"""
content_format = "{:<6} | {:<16} : {:<}\n"
content = "\n================== Variables & Output ==================\n"
content += content_format.format("Type", "Variable", "Value")
content += content_format.format("-" * 6, "-" * 16, "-" * 27)
if not info_mapping:
return
def prepare_content(var_type, in_out):
content = ""
for variable, value in in_out.items():
if isinstance(value, (tuple, collections.deque)):
continue
elif isinstance(value, (dict, list)):
value = json.dumps(value)
content_format = "{:<16} : {:<}\n"
content = "\n==================== Output ====================\n"
content += content_format.format("Variable", "Value")
content += content_format.format("-" * 16, "-" * 29)
if is_py2:
if isinstance(variable, unicode):
variable = variable.encode("utf-8")
if isinstance(value, unicode):
value = value.encode("utf-8")
for key, value in info_mapping.items():
if isinstance(value, (tuple, collections.deque)):
continue
elif isinstance(value, (dict, list)):
value = json.dumps(value)
content += content_format.format(var_type, variable, value)
if is_py2:
if isinstance(key, unicode):
key = key.encode("utf-8")
if isinstance(value, unicode):
value = value.encode("utf-8")
return content
content += content_format.format(key, value)
_in = in_out["in"]
_out = in_out["out"]
content += prepare_content("Var", _in)
content += "\n"
content += prepare_content("Out", _out)
content += "-" * 56 + "\n"
if _out:
logger.log_info(content)
content += "-" * 48 + "\n"
logger.log_info(content)
def create_scaffold(project_name):