小言_互联网的博客

Postman接口自动化测试实战

382人阅读  评论(0)

一、准备

1.1、软件版本

软件 版本 系统
postman v7.30.1 Windows 7
newman 5.1.2 Linux CentOS 7.6
nodejs 12.18.3 Linux CentOS 7.6

1.2、涉及链接

Postman下载链接:https://www.postman.com/downloads
newman官网:https://www.npmjs.com/package/newman
nodejs下载链接:https://nodejs.org/zh-cn/download
聚合免费API官网:https://www.juhe.cn

二、环境搭建

2.1 postman

进入官网,下载Windows 64-bit版本,(浏览器下载较慢,建议使用迅雷下载)

2.2 nodejs

下载Linux 二进制文件(x64),右键复制下载链接,然后进Linux下载

# 安装wget工具
yum install -y wget
# 下载二进制包
wget https://nodejs.org/dist/v12.18.3/node-v12.18.3-linux-x64.tar.xz
# 解压至opt目录下
tar -xvf node-v12.18.3-linux-x64.tar.xz -C /opt/

配置环境变量

vi ~/.bashrc

追加以下内容

# node
export NODE_HOME=/opt/node-v12.18.3-linux-x64
export PATH=$NODE_HOME/bin:$PATH

刷新环境变量

source ~/.bashrc

查看版本

[root@localhost ~]# node -v
v12.18.3
[root@localhost ~]# npm -v
6.14.6

2.3 newman

使用npm直接安装newman

npm install -g newman --registry=https://registry.npm.taobao.org

--registry=https://registry.npm.taobao.org的意思临时指定npm仓库的下载源为国内淘宝源,提升安装速度。
查看版本

[root@localhost ~]# newman -v
5.1.2

由于后续需要生成测试报告,还需要安装html报告插件

# 基础版
npm install -g newman-reporter-html --registry=https://registry.npm.taobao.org
# 增强版
npm install -g newman-reporter-htmlextra --registry=https://registry.npm.taobao.org

三、准备接口

登陆聚合的网站,找几个免费调用的接口。

  • 1、手机号码归属地
  • 2、简/繁/火星字体转换

要求:将手机号码归属地返回的归属地名称通过字体转换接口转换成繁体字。

3.1 创建测试集

创建一个JuHe_API的测试集

3.2 填入接口

将聚合的两个接口添加进测试集


3.3 调试接口

填入接口信息,调试接口

  • 1、手机号码归属地

  • 2、简/繁/火星字体转换

3.4 断言

如何确定接口返回值正确性,这时候就需要添加断言,点击右边的快捷输入即可。

  • 1、手机号码归属地

  • 2、简/繁/火星字体转换

3.5 环境变量

将调用接口用到的key值设为环境变量,每次调用的时候引用即可。点击右边小齿轮

添加一个名为JuHe_ENV的环境变量,填入变量初始值,然后保存。


引用环境变量

  • 1、手机号码归属地

将环境变量切换为JuHe_ENV,然后key的值使用{{mobile_key}}方式引用环境变量。

  • 2、简/繁/火星字体转换

3.6 参数化

简/繁/火星字体转换text入参为手机号归属地的返回值,我们自动化过程中不可能手动输入该值,所以要使用参数化,取出上个接口的返回值,设置成环境变量,提供给下一个接口使用。

  • 1、手机号码归属地

设置返回值为环境变量。

// 设置归属地的返回值为province环境变量
var Body = JSON.parse(responseBody);
pm.environment.set("province", Body.result.province);


运行后查看当前环境变量,发现已经设置成功。

  • 2、简/繁/火星字体转换

引用上一个接口设置的环境变量

3.7 运行测试集

运行之前记得保存接口请求。

环境变量确保为JuHe_ENV,然后运行。

查看运行结果

四、自动化准备

4.1 下载测试集脚本文件


4.2 下载环境变量脚本文件


4.3 上传脚本文件至服务器

服务器安装lrzsz工具,可直接通过xshell将文件传入服务器。

yum install -y lrzsz

4.4 使用newman运行脚本文件

newman run JuHe_API.postman_collection.json -e JuHe_ENV.postman_environment.json
run : 运行测试集脚本文件
-e : 运行测试集的环境变量脚本文件

查看结果


生成html格式的报告

newman run JuHe_API.postman_collection.json -e JuHe_ENV.postman_environment.json -r htmlextra --reporter-htmlextra-export /root/JuHe_API.html
-r htmlextra : 使用 htmlextra 插件
--reporter-htmlextra-export : 报告另存为

查看报告

五、拓展

5.1 Nginx

HTMLNginx搭配极佳,使用Nginx服务器直接做报告的服务器,生成报告链接。

安装Nginx

rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm \
&& yum install -y nginx \
&& systemctl start nginx.service \
&& systemctl enable nginx.service \
&& systemctl stop firewalld \
&& systemctl disable firewalld

newman生成的报告直接另存到Nginx的主目录即可。

newman run JuHe_API.postman_collection.json -e JuHe_ENV.postman_environment.json -r htmlextra --reporter-htmlextra-export /usr/share/nginx/html/JuHe_API.html

浏览器访问Nginx服务器IP/JuHe_API.html,即可看到报告。

5.2 钉钉脚本

将每日执行的测试报告链接,通过钉钉机器人发送到群组里,简单方便,参考脚本:

#!/usr/bin/env bash
# Auth: liuli
# Version: v1.0, 2020/8/25
# Sys: CentOS 7.6
# Features: 使用newman执行postman脚本,生成测试报告。

time=`date "+%Y-%m-%d-%H:%M"`
API_FILE="/opt/newman/JuHe_API.postman_collection.json"
ENV_FILE="/opt/newman/JuHe_ENV.postman_environment.json"

# newman生成报告
newman run ${API_FILE} -e ${ENV_FILE} -r htmlextra --reporter-htmlextra-export /usr/share/nginx/html/${time}.html

# 钉钉机器人提醒
function alarmdingding(){
  apiurl="https://oapi.dingtalk.com/robot/send?access_token=b03f8a3f(换成自己的钉钉机器人token)"
  /bin/curl ${apiurl} \
    -X POST -H "Content-Type: application/json" \
    -d '{"msgtype": "link","link": {"text": "报告链接","title": "业务接口测试报告","picUrl": "http://www.baidu.com/pic/postman.jpg","messageUrl": "http://Nginx服务器地址/'${time}'.html"}}'
}
alarmdingding

钉钉机器人配置

钉钉机器人文档

Webhook中有机器人的token,安全设置添加一个报告的关键词。

效果


转载:https://blog.csdn.net/qq_39680564/article/details/108116659
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场