# -*- coding: utf-8 -*-
from common.SendRequests import *
from pactverify.matchers import PactJsonVerify
from pactverify.matchers import Matcher, Like, EachLike, Enum, Term, PactVerify
class CheckResult(object):
def __init__(self, result, expect):
self.result = result
self.expect = expect
self.is_result = False
def _dict_check(self, dictExcept):
"""
获取表格中expect字段的值,然后转化成json 契约
:return:
"""
expect = Matcher(json.loads(dictExcept))
mPactVerify = PactVerify(expect, hard_mode=False)
# 校验实际返回数据
mPactVerify.verify(self.result)
# 校验结果 False
print(mPactVerify.verify_result)
if mPactVerify.verify_result:
self.is_result = True
else:
print(f"校验失败原因是:{mPactVerify.verify_info}")
def _list_check(self, listExcept):
"""判断self.result 和listExcept 是否有交集 如果为空 则校验失败"""
# res = list(set(self.result) & set(listExcept))
pact_json = {'$Enum': json.loads(listExcept)}
mPactJsonVerify = PactJsonVerify(pact_json, hard_mode=False, separator="$")
# 校验接口返回结果
mPactJsonVerify.verify(self.result)
# 打印校验结果
if mPactJsonVerify.verify_result:
self.result = True
def _str_check(self, strExpect):
if strExpect != "":
self.is_result = False
def check_result(self):
"""分为字符串校验、字典校验、列表校验"""
if self.expect == "":
self._str_check(self.expect)
expect = eval(json.dumps(self.expect, ensure_ascii=False))
if type(json.loads(expect)) == list:
self._list_check(expect)
else:
print('进入到json字典校验')
self._dict_check(expect)
print(f"实际结果:{json.dumps(self.result, ensure_ascii=False)}")
assert self.is_result == True
if __name__ == '__main__':
r, e = request_post("iot", "v1_class_filter_6")
CheckResult(r, e).check_result()