Skip to content
Snippets Groups Projects
Commit 952b0b37 authored by Dariusz Kędzierski's avatar Dariusz Kędzierski
Browse files

Validator will now save also response if differences are detected

parent 1bdee7b8
No related branches found
No related tags found
1 merge request!15Set of tests for hivemind using tavern library
......@@ -3,7 +3,7 @@ class PatternDiffException(Exception):
def json_pretty_string(json_obj):
from json import dumps
return dumps(json_obj, sort_keys=True, indent=4)
return dumps(json_obj, sort_keys=True, indent=2)
def save_diff(name, diff):
""" Save diff to a file """
......@@ -11,6 +11,11 @@ def save_diff(name, diff):
f.write(str(diff))
f.write("\n")
def save_response(file_name, response_json):
""" Save response to file """
with open(file_name, 'w') as f:
f.writelines(json_pretty_string(response_json))
def validate_response(response):
""" Make sure that there is no error field in response json and there is a result field in response"""
......@@ -19,6 +24,7 @@ def validate_response(response):
assert error is None, "Error detected in response: {}".format(error["message"])
assert result is not None, "Error detected in response: result is null, json object was expected"
RESPONSE_FILE_EXT = ".out.json"
PATTERN_FILE_EXT = ".pat.json"
DIFF_FILE_EXT = ".diff.json"
def load_pattern(name):
......@@ -42,6 +48,8 @@ def compare_response_with_pattern(response, method=None, directory=None):
pattern_resp_diff = jsondiff.diff(pattern, result)
if pattern_resp_diff:
fname = directory + "/" + method + DIFF_FILE_EXT
response_fname = directory + "/" + method + RESPONSE_FILE_EXT
save_diff(fname, pattern_resp_diff)
save_response(response_fname, result)
msg = "Differences detected between response and pattern. Diff saved to {}\n\nDiff:\n{}".format(fname, pattern_resp_diff)
raise PatternDiffException(msg)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment