Postman断言、数据驱动+Jenkins集成

目录

一、Postman接口自动化测试结果断言

二、Postman数据驱动CSV测试

Postman实现数据驱动

方式一:未用到csv(主流)

方式二:CSV

实现针对不同情况设置不同断言

三、Postman接口自动化加密接口测试实战

四、旧版Newman+Allure+Jenkins自动化持续集成

[(1) 安装Node.js和Newman](#(1) 安装Node.js和Newman)

[(2) 导出测试用例](#(2) 导出测试用例)

[(3) 运行测试用例生成HTML报告](#(3) 运行测试用例生成HTML报告)

[(4) 运行测试用例生成Allure报告](#(4) 运行测试用例生成Allure报告)

1.下载并且安装JDK以及配置环境变量

2.下载并且安装Allure以及配置变量。

"e:\\ms\\allure-results"持续集成

1.需要安装jenkins

2.配置Jenkins

五、新版Postman+CLI+Jenkins自动化持续集成


一、 Postman接口自动化测试结果断言

1. 断言的方式

第一种:状态断言

第二种:业务断言

bash 复制代码
//断言
//状态断言
pm.test("断言状态码为200", function () { 
 pm.response.to.have.status(200); 
}); 
//业务断言 
pm.test("断言响应内容包括access_token", function () { 
 pm.expect(pm.response.text()).to.include("access_token"); 
});

2.Postman 自带断言,自动生产断言脚本

Get an environment variable:获取环境变量

Get a global variable:获取全局变量(常用

Get a variable:获取变量

Get a collection variable:获取集合变量

Set an environment variable:设置环境变量

Set a global variable:设置全局变量(常用

Set a collection variable:设置集合变量

Clear an environment variable:清除环境变量

Clear a global variable:清除全局变量

Clear a collection variable:清除集合变量

Send a request:发送一个请求

Status code: Code is 200:断言返回码为200(常用

1.Response body: Contains string:断言返回数据包含字符串(常用

2.Response body: JSON value check:断言JSON的值(常用

3.Response body:ls equal to a string:断言返回数据等于字符串(常用

Response headers: Content-Type header check:断言响应头包含Content-Type

Response time is less than 200ms:断言响应时间少于200MS(常用

Status code: Successful POST request:断言Post请求成功,即响应码在201-202之间

Status code: Code name has string:断言状态码的名字包括字符串,如OK

Response body: Convert XML body to aJSON Object:将XML正文转换为JSON对象

Use Tiny Validator for JSON data:对JSON数据使用微型验证器

3.如何精准的断言带有动态参数的接口

想去判断返回数据是否包含"广东随机数"这个值,随机数我们是动态的。

第一步:创建时不能用系统的时间戳{{$timestamp}}

第二步:在创建请求之前自己创建一个时间戳

第三步:把参数改成自定义的时间戳

第四步:断言绝对不能使用{{times}}取全局变量。要用pm.globals.get("times")

用+号做拼接

4.全局断言

由于我们对每个接口都会进行判断200状态码,所以我们将其设置为全局断言,即在整个项目范围内进行设置。

删掉刚才在接口中的状态断言代码,我们设置完全局断言之后再次测试:

二、 Postman数据驱动CSV测试

什么是数据驱动?

通过数据驱动用例执行,本质上请求四要素里面的请求参数不同,因为不同的数据传入接口得到不同

的结果。所以我们可以先把这些数据设置好,然后读取这个数据文件执行用例。实现覆盖正反例。

Postman实现数据驱动

方式一:未用到csv(主流)

新建文件夹,用来涵盖所有获取鉴权码到access token接口的正反例测试。

复制之前我们创建的获取鉴权码接口测试,修改参数的值实现反例测试。

修改grant_type异常

修改appid为异常数据

我们进行手动批量运行该文件夹下的所有接口测试,并取消勾选高级选项中报错仍然执行。

因为获取其它两个不能成功获取到token,所以只有状态码的断言。

由于之前的断言看不出来,所以修改断言信息,并注释掉原先设置全局变量的值,因为token获取失败,那全局变量的值肯定也不会成功:

再次测试:

方式二:CSV

第一步:根据接口的参数编写CSV数据文件

复制代码
grant_type,appid,secret
error,wxb03334b9bc738a07,976efc6e909e7ac5059f5746b0bca55a
client_credential,error,976efc6e909e7ac5059f5746b0bca55a
client_credential,wxb03334b9bc738a07,error
client_credential,wxb03334b9bc738a07,976efc6e909e7ac5059f5746b0bca55a

第二步:把所有的参数都改成获取全局变量,特别注意,参数名必须和你的CSV里面的名称一致。

把业务断言注释掉:

第三步:选择CSV文件批量运行

这个是我认为Postman最大的败笔。为什么?

因为:Postman不能做到一个接口一个数据文件,而是所有的接口一个数据文件。

这里上传文件时,所有接口共用一个数据文件。

实现针对不同情况设置不同断言

第一步,查看我们每一个正反例的返回结果:

bash 复制代码
{ 
 "errcode": 40002, 
 "errmsg": "invalid grant_type rid: 66e19e48-1bbf2f5b-20d8f6d0" 
} 

{ 
 "errcode": 40013, 
 "errmsg": "invalid appid rid: 66e19e61-64eebebe-42ceaacb" 
} 

{ 
 "errcode": 40125, 
 "errmsg": "invalid appsecret rid: 66e19e6f-5f6356a6-5f806d8a" 
} 

{ 
 "access_token": "84_78l0fREd9WdgRgW4O5_40xC3U3wWMfOwkkVCOhj71-
Nh0cuRGNFHCSqemg3htCMd7ECVz3NliVGPdbBdIGgBgAk0ambejmHQD6pJRZ9WEwaA90JGqmuGvSGNj0sLIXbAB
AURG",

 "expires_in": 7200 
}

第二步,修改csv文件内容,让我们在执行完csv文件测试的时候可以获取到我们所设置的每一种正例、反例的返回字符串

assert_value

逻辑:只有结果中返回了token才提取。否则只断言。

第三步,修改断言和提取代码

bash 复制代码
grant_type,appid,secret,assert_value
error,wxb03334b9bc738a07,976efc6e909e7ac5059f5746b0bca55a,invalid grant_type
client_credential,error,976efc6e909e7ac5059f5746b0bca55a,invalid appid
client_credential,wxb03334b9bc738a07,error,invalid appsecret
client_credential,wxb03334b9bc738a07,976efc6e909e7ac5059f5746b0bca55a,access_token
bash 复制代码
//业务断言
//判断响应数据中是否有access_token,如果有则提取。 
// 获取响应体 
var responseBody = pm.response.text(); 
//打印 
console.log(responseBody); 
// 检查响应体中是否包含字符串 'access_token' 
if (responseBody.includes('access_token')) { 
//正则 
 var match = responseBody.match('"access_token":"(.*?)"'); // 使用正则表达式匹配 
//保存到全局变量 
 pm.globals.set("baili_token",match[1]); 
} 

//断言了四个接口 
pm.test("判断返回数据包含有csv中的断言字符串", function () { 
 pm.expect(pm.response.text()).to.include(data.assert_value); 
});

第四步,进行测试,我们要重新上传csv文件

成功实现不同断言效果:

三、Postman接口自动化加密接口测试实战

加密接口,自定义加密的,签名SIGN

1. 什么是加密接口以及目前有哪些加密方式?

加密使用的网站:

(1) 单向加密:只加密,不能解密

MD5(哈希),SHA,HMacSHA

(2) 双向加密

对称(相同的秘钥):AES,DES,Base64(没秘钥)

不对称(公钥和私钥):RSA,Postman不支持,需要自己写js脚本或者调用第三方的js脚本进行调

试。

2.Postman 加密接口实战?

测试:只需要加密,不需要解密。

MD5加密接口实战:

复制代码
var md5_username = CryptoJS.MD5("admin").toString(); 
var md5_password = CryptoJS.MD5("123").toString(); 
pm.globals.set("md5_username",md5_username); 
pm.globals.set("md5_password",md5_password);

Base64加密接口实战:

复制代码
var bs_username = btoa("admin"); 
var bs_password = btoa("123"); 
pm.globals.set("bs_username",bs_username); 
pm.globals.set("bs_password",bs_password);

四、旧版Newman+Allure+Jenkins自动化持续集成

特点:能够生成美观的 Allure 报告,缺点不利于敏捷开发的快速迭代。

newman是一个命令行的集合运行器,允许在没有Postman CLI的情况下实现自动化持续集成。

命令:newman run

参数:

-e 指定环境变量

-g 指定全局变量

-d 指定数据文件

-n 指定迭代次数

-r html --reporter-html-export 生成HTML报告

-r allure --reporter-allure-export 生成ALLUE报告

(1) 安装Node.js和Newman

下载:https://node.js.org/

验证:node

安装Newman:npm install -g newman

验证:newman -v

(2) 导出测试用例

导出全局变量和数据文件,把环境变量改成集合变量

导出整个项目

导出全局变量

(3) 运行测试用例生成HTML报告

newman run "D:\\TestStudy\\exportTest\\Testcase.json" -g "D:\\TestStudy\\exportTest\\globals.json" -r html --reporter-html-export "D:\\TestStudy\\exportTest\\report.html"

执行时报错,安装报告器 npm install -g newman-reporter-html

再次执行

点击查看

(4) 运行测试用例生成Allure报告

两个前提:

1.下载并且安装JDK以及配置环境变量

2.下载并且安装Allure以及配置变量。

下载压缩包

Central Repository: io/qameta/allure/allure-commandline

双击:

配置环境变量:

验证:

newman run "D:\\TestStudy\\exportTest\\Testcase.json" -g "D:\\TestStudy\\exportTest\\globals.json" -r allure --reporter-allure-export "D:\\TestStudy\\exportTest\\allure-results"

报错

安装

之后在数据的文件夹中打开cmd,执行下面的命令

"e:\\ms\\allure-results"持续集成

1.需要安装jenkins

从官网下载war包,看好jdk和Jenkins的版本对应,我这里是jdk1.8

2.配置Jenkins

jenkins可以定时执行。

admin 123456

登录之后选择新建item

用war包下载:

7bdf54733f014fd19378e360c413c930

admin 123456

点击Advanced

设置脚本代码

还要设置执行后的脚本代码,但我没安装插件,无法正常选择生成allure报告

五、新版Postman+CLI+Jenkins自动化持续集成

优点:不需要导出,然后非常适合敏捷开发中的快速迭代。

(1) 把环境变量改成集合变量

(2) 持续集成:

1.需要安装jenkins

2.配置Jenkins

一步到位

持续集成:

将昨天的脚本代码粘贴到编辑Jenkins的设置Windows 批处理脚本代码的地方,把原来的删掉

相关推荐
随风而飘18613 小时前
KEITHLEY吉时利 2400 数字源表
人工智能·功能测试·科技·测试工具
程序员三藏18 小时前
自动化测试用例编写详解
自动化测试·软件测试·python·功能测试·测试工具·职场和发展·测试用例
测试老哥21 小时前
Pytest自动化测试框架tep环境变量、fixtures、用例三者之间的关系
自动化测试·软件测试·python·测试工具·测试用例·pytest·职场发展
qq_513728041 天前
Selenium 显式等待
selenium·测试工具
St_rive1 天前
selenium cookie的处理
数据库·selenium·测试工具
随风而飘1861 天前
安立(Anritsu)MT8820C无线综合测试仪(手机综测仪)
网络·功能测试·测试工具·5g·智能手机
m24tyy2 天前
常见空间测绘搜索引擎介绍和使用以及子域名的收集
网络·测试工具·搜索引擎
程序员三藏2 天前
浅谈性能测试
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·性能测试