接口自动化测试
目标
上节课,我们 手工执行
了接口测试用例 。
利用Python程序发送 HTTP 请求消息,打印出响应消息。然后人工检查是否用例里面的预期结果相符。
这只是手工测试,我们要自动化测试,必须把用例的所有步骤全部自动化实现。
这包括,用程序实现 :
-
预置条件中数据环境的构建
-
测试步骤中的测试动作,比如 发送HTTP消息给被测系统
-
预期结果中的检查,比如 对返回HTTP响应消息中 数据的检查
自动化测试系统的开发,需要挑选一款合适的框架,这里我们用 白月黑羽 自行研发的 hytest。
对 hytest 不了解的朋友,点击这里学习 hytest 教程
注意:后面的视频讲解中使用的是 hytest 的上代产品 黑羽robot, 和hytest用法大体类似。hytest 更加简单,无需手动下载。
自动化系统目录结构
我们先实现用例 API-0151 的自动化,请大家点击这里,看视频讲解
该视频对应的最终项目代码,点击这里下载
我们再实现用例 API-0152、API-0153 的自动化,请大家点击这里,看视频讲解
该视频对应的最终项目代码,点击这里下载
注意视频讲解中,当代码出现了错误,我们是怎么调试错误的。
现在我们实现了3个用例,一起执行一下看看,有没有问题?思考一下
该视频对应的最终项目代码,点击这里下载
看完视频后,我们要记住的重点是:
-
自动化用例的目录结构,最好
按照 数据环境 规划
-
下层目录会继承上层目录的 数据环境
配置文件
我们注意到,webapi.py 库文件里面 发送API 请求,都是写死了 请求的 url ,比如
print('登录')
response = self.s.post("http://127.0.0.1/api/mgr/signin",
...
print('列出客户')
response = self.s.get("http://127.0.0.1/api/mgr/customers",
...
print('添加客户')
response = self.s.post("http://127.0.0.1/api/mgr/customers",
这样做的问题是,如果我们测试系统安装在另外的机器上,这些代码都得更改IP地址。
所以,我们应该把被测系统的主机地址写在配置文件 cfg/cfg.py
中,如下所示
然后,其他代码使用配置文件里面的主机地址,像这样
from cfg import cfg
print('登录')
response = self.s.post(
f"http://{cfg.target_host}/api/mgr/signin",
data={
'username': username,
'password': password
}
)