测试平台系列(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
改写断言方式
看看之前的断言方式:
文章图片
因为我们也不可能补充很多内容,所以我们只添加一些
常见的
。文章图片
文章图片
我们新增一些,包含/不包含/包含于/不包含于/长度等于/长度大于/长度小于/JSON等于这样的校验方式。并且用
emoji
区分了是否成功。来看看效果吧~
文章图片
这样就
稍微丰富
了咱们的断言手段,但我们还有一些JSON包含等,以及文本比对相似度
断言的方式还没派上用场,之后有机会再给大家展示。今天的内容就分享到这儿了,有兴趣的朋友们可以一起动手写起来呀!~
(本期内容比较少,下期带来重磅的
Python的定时任务系列
)【测试平台系列(70)|测试平台系列(70) 丰富断言类型】在线体验地址: http://test.pity.fun
前端代码仓库: https://github.com/wuranxu/pityWeb
后端代码仓库: https://github.com/wuranxu/pity
推荐阅读
- 基于微信小程序带后端ssm接口小区物业管理平台设计
- 【欢喜是你·三宅系列①】⑶
- 你不可不知的真相系列之科学
- 人脸识别|【人脸识别系列】| 实现自动化妆
- 女生该不该用小号测试男朋友()
- BNC公链|BNC公链 | Eth2.0测试网Topaz已质押超100万枚ETH
- 2018-06-13金句系列7(金句结构-改编古现代诗词)
- Unity和Android通信系列文章2——扩展UnityPlayerActivity
- 乡野村趣系列之烧仙草
- Java内存泄漏分析系列之二(jstack生成的Thread|Java内存泄漏分析系列之二:jstack生成的Thread Dump日志结构解析)