Skip to content

Commit d3c13bf

Browse files
authored
Test: print the diff list when validation failed (#46)
1 parent 7420f10 commit d3c13bf

2 files changed

Lines changed: 29 additions & 4 deletions

File tree

setup.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
extras_require={
4444
"test": [
4545
"testcontainers",
46+
"pyyaml",
4647
"Werkzeug",
4748
"pymysql",
4849
"redis",

tests/plugin/__init__.py

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,23 @@
1616
#
1717
import inspect
1818
import os
19+
import sys
1920
import unittest
2021
from abc import ABC
2122
from collections import namedtuple
23+
from difflib import Differ
2224
from os.path import dirname
2325

2426
import requests
27+
import yaml
2528
from requests import Response
2629
from testcontainers.compose import DockerCompose
2730

31+
try:
32+
from yaml import CLoader as Loader
33+
except ImportError:
34+
from yaml import Loader
35+
2836
HostPort = namedtuple('HostPort', 'host port')
2937
ServicePort = namedtuple('ServicePort', 'service port')
3038

@@ -72,12 +80,28 @@ def validate(self, expected_file_name=None):
7280
expected_file_name = os.path.join(dirname(inspect.getfile(self.__class__)), 'expected.data.yml')
7381

7482
with open(expected_file_name) as expected_data_file:
83+
expected_data = os.linesep.join(expected_data_file.readlines())
84+
7585
response = requests.post(
7686
url=self.__class__.url(self.__class__.collector_address(), path='/dataValidate'),
77-
data=os.linesep.join(expected_data_file.readlines()),
87+
data=expected_data,
7888
)
79-
print('validate: ', response)
8089

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)
82106

83-
return response
107+
return response

0 commit comments

Comments
 (0)