本节我们承接上节。
编写body请求体 的具体替换代码:
首先请求体类型是none的情况:
什么都不用处理,很简单。
然后是form-data和x-www,这里我为了尽快结束本模块,暂时写成一样的处理方式。等到本模块结束,后续对整个平台进行细化优化的时候,会重新更标准的处理这块底部请求。
最后是raw。
首先我设计raw-Json的格式:
然后代码是:
注意,这里用的是repr() 并不是str()
然后看看报告:
没问题,qid变成了字符串,en是整形。
最后是raw的其他4种字符串格式的情况:Text,JavaScript,Html,Xml
全是字符串,直接替换即可:
复制版本:
代码语言:javascript复制if api_body_method == 'none':
pass
elif api_body_method == 'form-data' and api_body_method == 'x-www-form-urlencoded':
rlist_body = re.findall(r"##(.*?)##",api_body)
for i in rlist_body:
api_body = api_body.replace("##" i "##",str(eval(i)))
elif api_body_method == 'Json':
rlist_body = re.findall(r"##(.*?)##",api_body)
for i in rlist_body:
api_body = api_body.replace("##" i "##",repr(eval(i)))
else:
rlist_body = re.findall(r"##(.*?)##", api_body)
for i in rlist_body:
api_body = api_body.replace("##" i "##", str(eval(i)))
好了,目前我们暂时处理完了请求体替换部分,接下来是最后的断言规则。
我们先把请求的返回体 打印出来,方便我们查看报告时判断。
然后我们运行一下该用例,看看输出:
可以看到,因为我们第一个接口是真实的,返回的是json串,第二个接口是我们随便写的,报了404,返回的是一个html大段落。
这俩种返回体,很方便我们进行后续断言调试了:
不过我们要先去设计好 这三种断言规则:
三种断言和上面提取 的 摆放不一致,
都是等号左侧 放实际寻找代码,右侧放 预期值。大家仔细阅读三种规则,然后在我们依次实现之前,要修复一个bug!!!:
注意上图中,我把这三个断言的id 写混了,
修改一下,成为下面的情况:
复制版本:
代码语言:javascript复制 <textarea id="assert_path" rows="3" style="width: 90%;background-color: rgba(245,236,222,0.29)" placeholder="断言返回值-路径法:
路径=预期值,字符串必须写引号,等号右侧会被求值。多个用换行分隔,例如:
/data/[3]/username='wangzijia'
/data/[2]/userid=0123
/data=[1,2,3]"></textarea>
<textarea id="assert_zz" rows="3" style="width: 90%;background-color: rgba(245,236,222,0.29)" placeholder="断言返回值-正则法:
左边界字符串(.*?)右边界 = 预期值,字符串必须写引号,等号右侧会被求值,多个用换行分隔,例如:
username':(.*?),='wangzijia'
uid':(.*?),=12345"></textarea>
<textarea id="assert_qz" rows="3" style="width: 90%;background-color: rgba(245,236,222,0.29)" placeholder="断言返回值-全文检索:
进行全文检索,存在即通过,全部按照字符串检索,不要加引号,多个用换行分隔,例如:
123495
请求成功
code:200"></textarea>
修复bug后,刷新页面,开始调试。
首先是断言路径法:
我们就拿第一个步骤接口做实验:
我们之前章节的数次测试可以知道这个queryid的值并不是123456,我们这个故意写错的。
代码实现:
我们来运行下看看结果:
这里用例不出意外的失败了,爆出了 值不等 的失败详情。
今天就到这里了。大家多消化消化,不要着急。