- 生成的数据是随机数的时候,如果后面请求需要引用就会报错
- 比如下面用例中创建Doc的时候会自动生成一个Doc ID,后面对这个Doc编辑操作
抓包工具: Fiddler
找到这个Doc parameter最初出现的请求位置
-
通过请求找到这个创建document的地方
image.png -
如果你无法确定是哪个请求是创建document,可以用以下两个方法
1.录制2个步骤相同,使用变量相同的脚本,观察其中不同的变量值
2.录制完成后进行回放,错误请求的前面一个或者附件的请求就是有需要关联的参数
确定Document是变化以后,需要在yaml文件中添加参数值
- 使用yaml本着简洁易读,但是格式有严格要求,之前格式问题经常报错
- 使用Json也是可以完成,但是Json太多{},[] 代码冗余
使用extract 将document id保存,提供后面请求使用
-
添加extract,并创建参数名documentId,保存document id变量
-
如何获取document id 是根据响应体里面的document 的样式
image.png
extract:
documentId: content.data.id
- 完整请求体如下
name: /api/list/create_doc
request:
data:
folderId: '0'
type: '0'
headers:
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36
X-Requested-With: XMLHttpRequest
method: POST
url: https://mubu.com/api/list/create_doc
extract:
documentId: content.data.id
validate:
- eq:
- status_code
- 200
- eq:
- headers.Content-Type
- application/json;charset=UTF-8
- eq:
- content.code
- 0
- eq:
- content.msg
- null
将使用document id的部分进行替换
- 使用$加上参数名进行替换
- 参数需要用{}进行包含
代码如下:
- name: /doc${documentId}
request:
headers:
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: same-origin
Sec-Fetch-User: ?1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36
method: GET
url: https://mubu.com/doc${documentId}
validate:
- eq:
- status_code
- 200
检查关联的参数是否能够被读取
- 通过debug方式,打印出Log信息
- 带上参数--log-level debug 将所有的请求log打印
hrun demo_mubu.yml --log-level debug
-
在create URL发送请求后,响应中会打印出content.data.id的数据
image.png
在报告中查看关联数据的正确性
image.png createURL.png ReadDoc.png- 以上可以清楚的看到在2个请求中都有document id的值,并且在后面请求中也直接使用,返回状态码200
- 以上是对动态参数进行关联的一点总结
网友评论