1. 随机文本mock
在之前章节已经成功对step步骤增加了mock_res 字段用来存放用户设置的写死的返回值。本节就来实现它们:
其实很简单,直接打开我们run_case.py,在demo函数中,原来的流程是这样的:
现在要给改下,加个判断。代码中这么改:
这个else包含的内容直到 这里:
重启服务,运行下看看:
实验的仍然是这第一个step步骤:
报错是因为mock的内容不是json,加个try:
2. 正常mock值
只输出了返回体,因为mock接口不关心请求数据了,反正没有真实请求。但这条用例算报错了,提取返回值的代码中,不能对这句话进行求值并提取。
所以再换个 比较贴近真实的返回值mock,{"err_no":1234560,"errmsg":"谁不是路人","queryid":"999888777"}:
保存后,这次看看效果:按照预期,应该用例通过:
看来是通过了。mock成功生效了。
3. bug修复:(也可以不加,因为这里报错其实说明断言不过,一般不改)
# # 正则提取法
if get_zz != '': # 说明有配置
for i in get_zz.split('\n'):
key = i.split('=')[0].rstrip()
zz = i.split('=')[1].lstrip()
values = re.findall(zz, res)
if len(values) > 0:
value = values[0]
else:
value = ''
exec('global %s\n%s = "%s" ' % (key, key, value))
因为正则可能没结果,因此要修改一下
最后还需优化:正则提取和断言的res(mock时填写了空格),会报错,但不应该报错
本节结束,但是这段demo代码的容错性和健壮性都还远远不足,一个不规范输入就会引起用例报错,并且报错日志可读性不高,所以下节课会进行多用例模块的最后一节收尾章,会对此函数进行优化。