runapi的流程测试与断言功能
<h3>流程测试</h3>
<p>runapi的流程测试功能可以对接口进行自动化测试、回归测试等,以便开发、测试人员及时发现问题。我们可以把若干个接口抽象为一个流程,当运行这个流程的时候,runapi会把每一个你选择的接口的测试情况罗列出来。
比如说,我们把用户创建文章、修改文章、删除文章、评论文章等文章相关的接口集合到一个文章流程里。每次修改完接口,我们都可以跑一下这个流程看有没有影响了其他接口,有没有引出新问题。</p>
<h3>断言</h3>
<p>跑一个流程测试的时候,我们需要对接口的成功和失败做出一些定义,然后让工具按照这个定义去自动判断接口是否成功。如果失败了,则显眼地提示自己手动去修改接口,节省大量人工找bug和测试的时间。
这里对成功和失败的定义,我们引入了一个叫断言的概念来处理。一个断言,就是一个判断成败的定义。它以脚本的形式放在每个接口的[后执行脚本](<a href="https://www.showdoc.com.cn/p/8a327934530646a144997c4ab58dd1dd">https://www.showdoc.com.cn/p/8a327934530646a144997c4ab58dd1dd</a> "后执行脚本")里。一个接口里可以放置多个断言,比如说断言返回码是200,并且响应时间低于100毫秒,再同时要求返回数据体为json。只有当全部断言都通过的时候,该接口才会被定义为测试通过。</p>
<p>断言支持两种写法,一种是简单的单行表达式写法,一种是满足复杂需求的函数式写法。</p>
<p>单行表达式写法简单易上手,能满足一些常见简单情况。而用函数式写法能满足更多使用场景。下面将分别说明</p>
<h3>单行表达式</h3>
<pre><code>
// runapi.assert()函数的参数是一个的表达式字符串
// 这个表达式执行最终返回值是true或者false,这样来表示断言通过或失败
// 表达式在流程测试的界面中也会显示出来
runapi.assert('status==200') // 表示响应码为200的时候断言通过
runapi.assert('responseTime&lt;100') // 表示响应时间小于100毫秒的时候断言通过
runapi.assert(&quot;bodyIsJson()&quot;) // 响应内容为json格式字符串的时候断言通过
// 如果响应内容中包含keyword这个字符串,表示断言通过
runapi.assert(&quot;bodyHas('我是关键字')&quot;) // 注意这里单引号和双引号不要错了
// 如果响应体为json且json的第一层key的error_code为0 ,则表示断言通过
// 比如返回这样 {&quot;error_code&quot;:0,“data”:[]}
runapi.assert(&quot;responseBody.error_code === 0&quot;)
// 如果响应体为json且data数组第一层key的id大于0 ,则表示断言通过
// 比如返回这样 {&quot;error_code&quot;:0,&quot;data&quot;:[{&quot;id&quot;:17,&quot;name&quot;:&quot;你好1&quot;},{&quot;id&quot;:18,&quot;name&quot;:&quot;你好2&quot;}]}
runapi.assert(&quot;responseBody.data[0].id &gt; 0 &quot;)
</code></pre>
<h3>函数式</h3>
<pre><code>
// 第一个参数是在流程测试界面中显示的文本描述,第二个参数是一个函数
runapi.assert(&quot;响应码为200&quot;,function(){
// 如果返回码是200,则返回成功
if(runapi.status==200){
return true ;
}else{
return false ;
}
// 函数体里其实可以写很多代码,支持标准javascript语法,可以多重逻辑判断
// 最终记得return true或者return false来表示通过或者失败
// runapi这个对象下都有哪些属性和方法,可以参考上面的断言例子以及前后执行脚本的说明例子
})
</code></pre>
<h3>其他</h3>
<p>[前后执行脚本的帮助说明](<a href="https://www.showdoc.com.cn/p/8a327934530646a144997c4ab58dd1dd">https://www.showdoc.com.cn/p/8a327934530646a144997c4ab58dd1dd</a> "前后执行脚本的帮助说明")</p>