测试平台系列(70)|测试平台系列(70) 丰富断言类型

大家好~我是米洛

我正在从0到1打造一个开源的接口测试平台, 也在编写一套与之对应的完整教程,希望大家多多支持。

欢迎关注我的公众号测试开发坑货,获取最新文章教程!
回顾 上一节我们支持了SQL类型的构造方法。
接下来我们要讲的是如何丰富我们的断言类型。
基础断言
我们之前的断言部分还是比较残缺的,就好像辟邪剑谱一样。今天我们就来尽量完善下断言的内容。
先看看之前的断言类型:
  • 等于
  • 不等于
  • 属于
但这些往往还不够,我们还需要新增一些。还记得我们之前写的如何比对2个JSON对象吗?我们今天也要把它运用到实战里面。
编写utils/json_compare.py
由于之前已经讲过json对比的思路,所以这边贴一下源码,并把JsonCompare类进行单例包装。
import jsonfrom app.utils.decorator import SingletonDecorator@SingletonDecorator class JsonCompare(object):def compare(self, exp, act): ans = [] self._compare(exp, act, ans, '') return ansdef _compare(self, a, b, ans, path): a = self._to_json(a) b = self._to_json(b) if type(a) != type(b): ans.append(f"{path} 类型不一致, 分别为{type(a)} {type(b)}") return if isinstance(a, dict): keys = [] for key in a.keys(): pt = path + "/" + key if key in b.keys(): self._compare(a[key], b[key], ans, pt) keys.append(key) else: ans.append(f"{pt} 在实际结果中不存在") for key in b.keys(): if key not in keys: pt = path + "/" + key ans.append(f"{pt} 在实际结果中多出") elif isinstance(a, list): i = j = 0 while i < len(a): pt = path + "/" + str(i) if j >= len(b): ans.append(f"{pt} 在实际结果中不存在") i += 1 j += 1 continue self._compare(a[i], b[j], ans, pt) i += 1 j += 1 while j < len(b): pt = path + "/" + str(j) ans.append(f"{pt} 在预期结果中不存在") j += 1 else: if a != b: ans.append( f"{path} 数据不一致: {a} " f"!= {b}" if path != "" else f"数据不一致: {a} != {b}")def _color(self, text, _type=0): if _type == 0: # 说明是绿色 return """{}""".format(text) return """{}""".format(text)def _weight(self, text): return """{}""".format(text)def _to_json(self, string): try: float(string) return string except: try: if isinstance(string, str): return json.loads(string) return string except: return string

改写断言方式
看看之前的断言方式:
测试平台系列(70)|测试平台系列(70) 丰富断言类型
文章图片

因为我们也不可能补充很多内容,所以我们只添加一些常见的
测试平台系列(70)|测试平台系列(70) 丰富断言类型
文章图片

测试平台系列(70)|测试平台系列(70) 丰富断言类型
文章图片

我们新增一些,包含/不包含/包含于/不包含于/长度等于/长度大于/长度小于/JSON等于这样的校验方式。并且用emoji区分了是否成功。
来看看效果吧~
测试平台系列(70)|测试平台系列(70) 丰富断言类型
文章图片

这样就稍微丰富了咱们的断言手段,但我们还有一些JSON包含等,以及文本比对相似度断言的方式还没派上用场,之后有机会再给大家展示。
今天的内容就分享到这儿了,有兴趣的朋友们可以一起动手写起来呀!~
(本期内容比较少,下期带来重磅的Python的定时任务系列)
【测试平台系列(70)|测试平台系列(70) 丰富断言类型】在线体验地址: http://test.pity.fun
前端代码仓库: https://github.com/wuranxu/pityWeb
后端代码仓库: https://github.com/wuranxu/pity

    推荐阅读