接口测试:Postman+Newman+Jenkins生成测试报告并邮件发送

1 Postman 编写接口

1.1 Collection编写

相信大部分盆友都用postman调用单个接口,Collection就是相当于把一系列接口集成起来,可以传递参数,完成一些简单的业务逻辑的验证,而不是像单接口那样只调用校验单个接口是否能通。
当然,形成collection后,后面批量跑接口时候会方便点,而且可以设置循环次数循环跑,对于需要造大量测试数据时候还是很友好的。
Collection中可以添加文件夹对接口进行归类显示。
在这里插入图片描述

1.2 Collection 执行顺序

所有请求会按照您在 Postman 中看到的顺序运行。因此,首先按文件夹的顺序执行所有请求,然后是集合根目录中的所有请求。
如果单纯想改变执行顺序,那可以上下拖动显示顺序以调整执行顺序。但是,您可以使用名为 的内置函数覆盖此行为postman.setNextRequest()。顾名思义,此函数允许您指定接下来运行哪个请求。

在这里插入图片描述
稍微演进一点,他可以在断言中很灵活的运用,比如:

const responseJson = pm.response.json()
#根据自己接口的返回值取值
relation = responseJson.xxxx.relation
block_relation= responseJson.xxxx.block_relation
# xxx可以为接口的名称或者ID
if(relation == 2 || relation == 1){
    postman.setNextRequest("xxx")
}
if(block_relation == 1){
    postman.setNextRequest("xxxx")
}

说明下,如果使用了postman.setNextRequest(“xxxx”) 跳转到指定接口,那这两个接口之间的接口就会被忽略了,不会执行。

1.3 Collection 前置脚本以及断言

每个接口的Pre-request-script 和test中可以编写调用前的脚本、以及调用后断言验证,是基于JavaScript的,而且大部分想用的断言情况,pm.test()方法都内置好了,灵活而且强大。
其中,Pre-request-script 脚本会在接口请求之前执行,test中脚本会在接口请求之后执行;如果Collection、文件夹接口中都分别添加了Pre-request-script 、test脚本,那执行顺序会是:

Collection中Pre-request-script -> 文件夹中Pre-request-script -> 接口中的Pre-request-script -> 请求 -> Collection中的test -> 文件夹中test -> 接口的test

官方文档的图
在这里插入图片描述
Pre-request-script 主要用于对前置接口的返回值字段需要做一些定制化处理,比如官方文档这个例子:
在这里插入图片描述
test 断言脚本,主要是验证接口的调用结果,除了验证常规的返回值状态,有时候根据业务需要还有校验一些字段类型、值等等。
主要验证方法为pm.test() 断言方法pm.expect()
然后,根据自己的验证需求,支持添加js代码

pm.test("Status test", function () {
    pm.response.to.have.status(200);
    pm.expect(pm.environment.get("env")).to.equal("production");
});

更多详细的例子,请移步postman官方文档的例子
如果觉得官网太多,可移步 postman常用断言实例

1.2 设置变量以及参数化

单击Postman右上角的Environment 眼睛按钮,然后单击Globals旁边的Edit,可以快速创建变量。接口调用时 {{}} 调用。
变量有以下几种范围:
在这里插入图片描述

  • 全局变量允许您访问集合、请求、测试脚本和环境之间的数据。全局变量在整个工作区中都可用。
  • 如果您仅使用单个环境,则集合变量是合适的,例如用于身份验证 / URL 详细信息
  • 环境变量允许您针对不同环境定制处理,例如本地开发与测试或生产。一次只能激活一个环境。
  • 如果只有一个环境,使用集合变量会更有效率,但是环境允许您指定基于角色的访问级别。
  • 局部变量是临时的,只能在您的请求脚本中访问。局部变量值仅限于单个请求或集合运行,并且在运行完成后不再可用。
  • 数据变量来自外部 CSV 和 JSON 文件,用于定义在通过 Newman 或 Collection Runner 运行集合时可以使用的数据集。
    在这里插入图片描述
    除了界面上在右上角设置变量外,不同接口数据传送过程中也可以在断言中设置:
#设置全局变量
pm.globals.set("variable_key", "variable_value");
#设置集合变量
pm.collectionVariables.set("variable_key", "variable_value");
#设置环境变量
pm.environment.set("variable_key", "variable_value");
#局部变量
pm.variables.set("variable_key", "variable_value");

#断言脚本中获取变量
pm.variables.get("variable_key");
pm.globals.get("variable_key");
pm.collectionVariables.get("variable_key");
pm.environment.get("variable_key");

#提取外部数据文件中的数据变量
pm.iterationData.get("variable_name")

下面列举下,我在断言中的使用案例,可能会更直观点

# 比如登录接口,想把cookie(token)设置到环境变量中供后续接口使用
# 返回结果转化成json格式后,‘data.xxx.cookie’后面就具体结构取到cookie或者data就可以
 var data = JSON.parse(responseBody)
 pm.environment.set("cookie", data.xxx.cookie)

# 下面人员信息例子中取特定的userid取法
const responseJson = pm.response.json()
userlist = responseJson.result.list
for(var i =0; i < userlist.length; i++){
	if(userlist[i].name == "xiaohua"){
	pm.collectionVariables.set("userid", userlist[i].userid);
	}
}

#人员信息json
{
    "status":"success",
    "code":200,
    "result":[
        {
            "name":"xiaohua",
            "userid":"1234",
            "sex":"male",
            "birth":"1970-7-7"
        },
        {
            "name":"xiaoming",
            "userid":"1235",
            "sex":"male",
            "birth":"1970-7-7"
        }
    ]
}

2 Newman运行并生成测试报告

2.1 Newman命令

newman run collectionname -e xxx -g xxx
各参数 -e 设置环境变量、-g设置全局变量、-r 生成报告、-n指定迭代次数、-d指定迭代数据文件
在这里插入图片描述

2.2 生成报告

Newman可以生成html、htmlextra两种类型的报告
详细可参见上篇文章:Newman生成美化报告

3 Jenkins定时构建并邮件发送报告

3.1邮件发送测试报告,并将报告内容展示到邮件中

邮件发送时,可以添加Email Extension Plugin 插件,这个插件可以自定义报告格式和样式。
在这里插入图片描述
安装后,需要在Jenkins 系统管理-系统配置,邮件通知部分配置邮箱服务器,同时系统配置中 “系统管理员邮件地址”的邮箱地址应该也要和这里配置的用户名是同一个邮箱。
在这里插入图片描述
然后还是在系统设置中的 Email Extension Plugin部分,配置发件信息。
在这里插入图片描述
在这里插入图片描述
其中 邮件格式的代码如下:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次构建日志</title>
</head>

<body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4"
    offset="0">
	<h3>以下是Jenkins自动发送的邮件,请勿回复!</h3>
    <div>
	<table width="95%" cellpadding="0" cellspacing="0"
        style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">
		<tr>
			<th><br />
				<h2>构建信息</h2>
			</th>
		</tr>
        <tr>
            <td>
                <ul>
                    <li>项目名称 : ${PROJECT_NAME}</li><br />
					<li>测试报告Url : <a href="${PROJECT_URL}HTML_20Report">${PROJECT_URL}HTML_20Report</a></li><br />
                    <li>触发原因: ${CAUSE}</li><br />
                    <li>项目  Url : <a href="${PROJECT_URL}">${PROJECT_URL}</a></li><br />
                </ul>
            </td>
        </tr>
	</table>
	</div>
	<div>
	<table>
		<tr>
            <th><br />
			<h2>测试报告</h2>
            </th>
        </tr>

		<tr>
			<td>
				<div>${FILE ,path="/Users/admin/index.html"}</div>
			</td>
		</tr>

	</table>
	</div>

  </body>
</html>

其中这里需要按自己实际路径稍微修改下,处改成邮件报告的地址,能让报告展示到邮件正文中。

${FILE ,path="/Users/admin/index.html"}

收到效果如下:
在这里插入图片描述

3.2 钉钉发送

配置钉钉发送还是比较简单的,
1、Jenkins 安装钉钉插件;
2、钉钉群里,添加上机器人,把机器人名称、webhook、关键字等信息填到Jenkins-系统管理-系统配置-钉钉部分,并勾选通知时机
3、job中勾选相应的钉钉机器人
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
参考文档:
Postman官方文档

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值