|
16 | 16 | # |
17 | 17 | import inspect |
18 | 18 | import os |
| 19 | +import sys |
19 | 20 | import unittest |
20 | 21 | from abc import ABC |
21 | 22 | from collections import namedtuple |
| 23 | +from difflib import Differ |
22 | 24 | from os.path import dirname |
23 | 25 |
|
24 | 26 | import requests |
| 27 | +import yaml |
25 | 28 | from requests import Response |
26 | 29 | from testcontainers.compose import DockerCompose |
27 | 30 |
|
| 31 | +try: |
| 32 | + from yaml import CLoader as Loader |
| 33 | +except ImportError: |
| 34 | + from yaml import Loader |
| 35 | + |
28 | 36 | HostPort = namedtuple('HostPort', 'host port') |
29 | 37 | ServicePort = namedtuple('ServicePort', 'service port') |
30 | 38 |
|
@@ -72,12 +80,28 @@ def validate(self, expected_file_name=None): |
72 | 80 | expected_file_name = os.path.join(dirname(inspect.getfile(self.__class__)), 'expected.data.yml') |
73 | 81 |
|
74 | 82 | with open(expected_file_name) as expected_data_file: |
| 83 | + expected_data = os.linesep.join(expected_data_file.readlines()) |
| 84 | + |
75 | 85 | response = requests.post( |
76 | 86 | url=self.__class__.url(self.__class__.collector_address(), path='/dataValidate'), |
77 | | - data=os.linesep.join(expected_data_file.readlines()), |
| 87 | + data=expected_data, |
78 | 88 | ) |
79 | | - print('validate: ', response) |
80 | 89 |
|
81 | | - self.assertEqual(response.status_code, 200) |
| 90 | + if response.status_code != 200: |
| 91 | + res = requests.get(url=self.__class__.url(self.__class__.collector_address(), path='/receiveData')) |
| 92 | + |
| 93 | + actual_data = yaml.dump(yaml.load(res.content, Loader=Loader)) |
| 94 | + |
| 95 | + differ = Differ() |
| 96 | + diff_list = list(differ.compare( |
| 97 | + actual_data.splitlines(keepends=True), |
| 98 | + yaml.dump(yaml.load(expected_data, Loader=Loader)).splitlines(keepends=True) |
| 99 | + )) |
| 100 | + |
| 101 | + print('diff list: ') |
| 102 | + |
| 103 | + sys.stdout.writelines(diff_list) |
| 104 | + |
| 105 | + self.assertEqual(response.status_code, 200) |
82 | 106 |
|
83 | | - return response |
| 107 | + return response |
0 commit comments