接着上一篇继续来对脚本进行优化,不了解上一篇内容的可以回头先看看(https://www.jianshu.com/p/f9270a57d27c)。
上一篇的脚本中使用的城市数据都是可以查到天气信息的,这一篇我们增加发送不存在的城市数据。
首先来看一下发送不存在城市数据的 API 文档信息:
{
"status":"The location can not be found.",
"status_code":"AP010010"
}
接下来在 CSV 文件中添加一些非法的城市名称、返回状态 status,返回状态码 status_code。

修改了数据后,请求和断言要如何修改呢?
再来回顾一下前面的请求脚本:

请求中的参数无论是查询有效城市天气信息还是无效城市天气信息其实都是需要填写的,所以请求脚本可以不作修改。
接下来看看断言部分。查询有效城市天气信息会断言城市名称 name 和城市 id,假如查询非法城市天气信息时执行这两个断言那肯定会报错,所以查询非法城市天气信息的断言需要另外编写。
查询非法城市天气信息后,我们对响应的状态 status 和状态码 status_code 这两项进行断言,下面添加两个断言到脚本中。
断言状态 status 。

断言状态码 status_code 。

添加了上面的断言后直接去运行脚本肯定也会报错,因为无论是查询有效城市天气信息还是无效城市天气信息时都会执行全部的断言。我们想要的运行方式是:查询有效城市天气信息时执行城市名称 name 和城市 id 的断言,查询无效城市天气信息时执行状态 status 和状态码 status_code 的断言。这样脚本又应该如何修改呢?
分开不同的情况去执行断言的话,我们可以在 CSV 文件中添加标识来区分不同类型的数据,比如可以添加一列 type内容 。

接着在原来的脚本中添加两个如果(If)控制器
放到获取实时天气请求下,然后在 if 控制器中添加判断条件。
判断有效城市。

判断无效城市。

添加 if 控制器后,我们把循环控制器的循环次数改成6,因为 CSV 文件中有6行可用数据。

在这里,大家想一个问题,如果以后 CSV 文件的数据增加或者减少了,难道每次都要去数一遍行数然后来修改循环控制器的循环次数吗?
当然不是。大家可以去看笔者另外一篇关于处理这个问题的文章(https://www.jianshu.com/p/7231e902c775),这里就不再重复写一遍了。
既然提到这个用法,那这里就直接用吧。


好,到这里为止,全部脚本都修改完成了,下面运行一次脚本。

从上面的断言结果可以看到6个断言都通过了。
以上就是 if 控制器运用到接口自动化测试中的一个小实例,希望对大家有帮助。
网友评论