断言可以用来检查响应头和响应体
1. 格式:一行一个断言,格式为 “指令:参数”。指令不区分大小写,但参数区分大小写,且断言中忽略空格和空行。
2. 特殊字符处理:若参数部分需包含 “:”,应写为 “:”。可使用 “//” 进行注释。
3. 相反指令:除 “status is” 外,含 “is”、“contain” 的指令,都有对应的 “not is”、“not contain” 表示相反意义。
格式:"status is: <响应码>"
// 假设响应头第一行为:"HTTP/1.1 200 OK" // 成功 status is: 200 // 失败 status is: 302
格式:"header <头部字段> [not] is|contain: <参数>",用来测试响应头部字段是否符合预期。
// 假设响应头Content-Type行为:"Content-Type: text/html; charset=UTF-8" // 成功 header content-type is: text/html; charset=UTF-8 // 成功 header content-type contain: text/html // 失败 header content-type not is : text/html; charset=UTF-8 // 失败 header content-type not contain: text/html
响应体示例1,节选完整HTML的一部分
<h3 class="title">无题</h3> <div> <p>锦瑟无端五十弦 一弦一柱思华年</p> <p>庄生晓梦迷蝴蝶 望帝春心托杜鹃</p> <p>沧海月明珠有泪 蓝田日暖玉生烟</p> <p>此情可待成追忆 只是当时已惘然</p> </div>
格式:"body [not] contain: <参数>",用来测试响应是否包含某个值。
// 成功 body contain: 无题 // 成功 body contain: 此情可待成追忆 只是当时已惘然 // 失败 body not contain: 无题 // 失败 body not contain: 此情可待成追忆 只是当时已惘然
如果响应体是HTML格式,可以使用DOM断言
格式:"dom exists element: <css 选择器>"
用来测试DOM中是否存在对应 css选择器 的节点。
格式:"query all '<css selector>' length is: <整数>"
用来测试DOM中对应 css选择器 节点的数量。
格式:"query '<css selector>' value|id|class|style|data-title|... [not] is|contain: <值>"
用来测试DOM中对应 css选择器 节点的属性值是否"是|包含"某个值。
格式:"query '<css selector>' content [not] is|contain: <值>"
用来测试DOM中对应 css选择器 节点的innerHTML是否"是|包含"某个值。
格式:"query '<css selector>' text [not] is|contain: <值>"
用来测试DOM中对应 css选择器 节点的文本是否"是|包含"某个值。
// 成功 dom exists element: .title // 成功 query all 'div p' length is: 4 // 成功 query "h3" text is: 无题 // 成功 query "div:nth-child(4)" text contain: 此情可待成追忆 只是当时已惘然
如果响应体是JSON格式,可以使用JSON断言
规则:
"json"": 整个JSON对象。
"json.data.<字符串>":json.data 对象的某个元素值。
"json.data.<整数>":json.data 数组的某个元素值。
// 等于javascript: json.data[1].message == 'abc' json.data.1.message is: abc // 等于javascript: json.data.key.message == 'abc' json.data.key.message is: abc // 等于javascript: json.data[1].message.includes('abc') == true json.data.1.message contain: abc
以上是所有的断言语法。
录制请求后,完全可以用"body contain: <值>"这样的方式来书写断言,这能让你及其快速的建立测试集。
如果追求精细,则可以使用DOM断言和JSON断言,使用起来稍微复杂一些,建立断言的成本也相对大一些。
这两种方式都可以,具体由你的喜好,或者项目的需要而定。