草庐IT

postman+newman+jenkins持续集成

测试小鬼 2023-09-02 原文

今天为大家带来的是postman+newman+jenkins进行API接口测试的持续集成:

一. postman测试实战

postman测试API接口是通过JavaScript脚本完成测试中的功能, 在请求发起前后实现测试操作.

常用功能: 请求前脚本(pre-request scripts)设置请求前置操作如设置变量等

请求后在tests模块中,对状态码, 响应头, 响应正文等信息进行断言操作

通过console 控制台进行调试

pre-request scripts:

var key=pm.environment.get("key");

获取响应json数据.

pm.response.json();  

二.测试套件与数据驱动实战

Runner批量运行测试脚本及组件说明:

 

nvironments 指定测试套件使用的环境变量

Iterations 表示测试套件执行的循环次数

Delay 表示接口请求之间, 每次接口发出后,延时的时间长度

Save responses 表示是否需要记录日志

Data 表示是参数化数据驱动

Keep variable values表示是否在执行过程中保留对环境变量的修改

通过Runner 跑完所有接口后, 点击接口名字, 就可以看到需要的所有log日志, 接口请求的四大要素 method url headers body, 状态码 响应头 响应正文

在Runner当中使用 test_data.txt, Data点击Select File, 浏览到模块中, 选择文件格式为text/csv ,   Preview 预览, 注意编码格式为utf-8.

Postman常用的断言方式有, 通过:

// 断言数据文件中期望的结果与实际结果中的返回数据一致

pm.test("断言id为: " + data.userid, function(){

var jsonres = pm.response.json();

pm.expect(jsonres.result[0].id).to.eql(data.userid); // expect(期望)

});

// 断言HTTP协议响应状态码

pm.test("断言响应状态为: 200", function(){

pm.response.to.have.status(200);

});

// 断言期望响应文本中包含字符串数据

pm.test("断言返回数据中包含token字段", function(){

pm.expect(pm.response.text()).to.include("token");// expect(期望)

});

iterations变为了多次, 次数与csv数据 行数对应   参数名必须与文件中行名一一对应.

三.newman命令行运行与持续集成实战

postman使用newman插件完成命令行执行postman脚本, 因此如果需要用命令行运行脚本, 需要先安装Newman.

官方文档: 

https://www.npmjs.com/package/newman

 安装Nodejs

官网下载地址: http://nodejs.cn/download/, 下载之后直接运行安装.安装之后确认环境变量中已经添加了node所在目录,否则手动添加.

在cmd中通过 node -v 和 npm -v 确认node环境是否已经搭建成功

 

提示: 如果提示npms 不是内部或外部命令, 也不是可运行的程序, 则需要手动去配置环境变量,在 PATH当中.

完成nodejs 安装之后, 在命令行输入: 

 npm install newman  -g  安装newman

也可以通过如下镜像源地址进行安装:

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

newman 运行postman collections

安装好newman之后, 可以通过命令行执行postman测试集中的脚本

官方文档: 

https://www.npmjs.com/package/newman

postman命令行运行文档:

https://learning.getpostman.com/docs/postman/collection_runs/command_line_integration_with_newman/

newman执行:

1. 导出collections

在collection选项菜单中选择export,  导出为json文件

2. newman执行 collection 导出的json文件

命令行输入newman run 导出的json文件名 通过newman命令行运行测试集

newman run D:/DK.postman_collection.json

3,怎么样把环境变量以及数据驱动加入进来. 还需要了解newman的一些常用的参数

Newman 常用参数

-e , --environment 使用环境变量文件或url

使用时, 首先在环境变量中通过导出功能将环境变量导出, 然后用如下命令引用.

newman run D:/DK.postman_collection.json -e D:\DK.postman_environment.json

-g,  --global 使用全局变量文件或URL

类似环境变量的使用, 在使用前, 先导出全局变量文件, 再通过-g 指定文件使用

-d , --iteration-data 指定使用的数据驱动文件

newman run D:/DK.postman_collection.json -e D:\DK.postman_environment.json -d D:\test_data.txt

-n 指定测试集循环次数iterations

newman run D:/DK.postman_collection.json -e D:\DK.postman_environment.json -d D:\test_data.txt  -n 3

newman -h     # newman测试报告

newman提供的测试报告中, 常用的包括cli, json和html 三种格式,

可以通过-r 或者 -reporter 命令指定所用格式

cli 格式为在cmd客户端呈现的报告模板, newman默认使用该格式

json格式可以导出json格式的报告, 通过-r html进行设置

并加上 --reporter-html-export 参数指定报告生成的路径

同时使用cli,json两种格式: 通过-json 设置导出报告格式.

newman run D:/DK.postman_collection.json -e D:\DK.postman_environment.json -d D:\test_data.txt  -n 3 -r cli,json --reporter-json-export D:\test_result.json

html格式可以导出html格式的报告, 通过 -r html进行设置, 并加上 --reporter-html-export参数指定报告生成的路径.

先安装html报告模板:

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

newman run D:/DK.postman_collection.json -e D:\DK.postman_environment.json -d D:\test_data.txt  -n 3   -r  html  --reporter-html-export D:\test_result.html

在已经实现newman通过命令行方式执行postman测试集的基础上, 可以方便的在jenkins上完成持续集成构建

四. 构建任务完成Jenkins定时执行Newman运行测试集

创建自由风格项目后, 在构建触发器里, 配置定时构建选项, 指定任务定时执行, 五个参数分别代表 分 时 天 月 星期 的周期维度

Build Triggers

在构建时, 添加构建步骤选择执行 windows批处理命令, 将newman命令写入即可

newman run D:/DK.postman_collection.json -e D:\DK.postman_environment.json -d D:\test_data.txt  -n 3   -r  html  --reporter-html-export D:\test_result.html

构建触发器(build triggers) 选择定时构建, 00 03 * * *  分 时 天 月 星期, 执行windwos批处理命令,  执行依据编辑好的bat脚本中的内容, 有乱码, 需要改环境变量.

变量名: JAVA_TOOL_OPTIONS

变量值: -Dfile.encoding=UTF-8

修改完环境变量后, 重启jenkins, 重新构建, 即可.

 

有关postman+newman+jenkins持续集成的更多相关文章

  1. ruby-on-rails - 如何使辅助方法在 Rails 集成测试中可用? - 2

    我在app/helpers/sessions_helper.rb中有一个帮助程序文件,其中包含一个方法my_preference,它返回当前登录用户的首选项。我想在集成测试中访问该方法。例如,这样我就可以在测试中使用getuser_path(my_preference)。在其他帖子中,我读到这可以通过在测试文件中包含requiresessions_helper来实现,但我仍然收到错误NameError:undefinedlocalvariableormethod'my_preference'.我做错了什么?require'test_helper'require'sessions_hel

  2. ruby-on-rails - 我如何将 Hoptoad 与 DelayedJob 和 DaemonSpawn 集成? - 2

    我一直很高兴地使用DelayedJob习惯用法:foo.send_later(:bar)这会调用DelayedJob进程中对象foo的方法bar。我一直在使用DaemonSpawn在我的服务器上启动DelayedJob进程。但是...如果foo抛出异常,Hoptoad不会捕获它。这是任何这些包中的错误...还是我需要更改某些配置...或者我是否需要在DS或DJ中插入一些异常处理来调用Hoptoad通知程序?回应下面的第一条评论。classDelayedJobWorker 最佳答案 尝试monkeypatchingDelayed::W

  3. postman接口测试工具-基础使用教程 - 2

    1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,

  4. postman——集合——执行集合——测试脚本——pm对象简单示例02 - 2

    //1.验证返回状态码是否是200pm.test("Statuscodeis200",function(){pm.response.to.have.status(200);});//2.验证返回body内是否含有某个值pm.test("Bodymatchesstring",function(){pm.expect(pm.response.text()).to.include("string_you_want_to_search");});//3.验证某个返回值是否是100pm.test("Yourtestname",function(){varjsonData=pm.response.json

  5. ruby-on-rails - rbenv:从 RVM 移动到 rbenv 后,在 Jenkins 执行 shell 中找不到命令 - 2

    我从Ubuntu服务器上的RVM转移到rbenv。当我使用RVM时,使用bundle没有问题。转移到rbenv后,我在Jenkins的执行shell中收到“找不到命令”错误。我内爆并删除了RVM,并从~/.bashrc'中删除了所有与RVM相关的行。使用后我仍然收到此错误:rvmimploderm~/.rvm-rfrm~/.rvmrcgeminstallbundlerecho'exportPATH="$HOME/.rbenv/bin:$PATH"'>>~/.bashrcecho'eval"$(rbenvinit-)"'>>~/.bashrc.~/.bashrcrbenvversions

  6. jenkins部署1--jenkins+gitee持续集成 - 2

    前置步骤我们都操作完了,这篇开始介绍jenkins的集成。话不多说,看操作1、登录进入jenkins后会让你选择安装插件,选择第一个默认的就行。安装完成后设置账号密码,重新登录。2、配置JDK和Git都需要执行路径,所以需要先把执行路径找到,先进入服务器的docker容器,2.1JDK的路径root@69eef9ee86cf:/usr/bin#echo$JAVA_HOME/usr/local/openjdk-82.2Git的路径root@69eef9ee86cf:/#whichgit/usr/bin/git3、先配置JDK和Git。点击:ManageJenkins>>GlobalToolCon

  7. ruby - Sinatra session 未按预期持续 - 2

    我正在尝试使用Sinatra中的重定向和session在网站周围传递一些数据。这是一个简化的示例,使用PrettyPrint进行调试:require'pp'require'rubygems'require'sinatra'enable:sessionsget'/'dosession[:foo]='12345'puts'session1'ppsessionredirectto('/redir')endget'/redir'doputs'session2'ppsession'helloworld'end查看Thin的输出,我看到:>>Listeningon0.0.0.0:4567,CTRL

  8. 三分钟集成 TapTap 防沉迷 SDK(Unity 版) - 2

    三分钟集成Tap防沉迷SDK(Unity版)一、SDK介绍基于国家对上线所有游戏必须增加防沉迷功能的政策下,TapTap推出防沉迷SDK,供游戏开发者进行接入;允许未成年用户在周五、六、日以及法定节假日晚上8:00-9:00进行游戏,防沉谜时间段进入游戏会弹窗进行提示!开发环境要求:Unity2019.4或更高版本iOS10或更高版本Android5.0(APIlevel21)或更高版本🔗Unity集成Demo参考链接🔗UnityTapSDK功能体验APK下载链接二、集成前准备1.创建应用进入开发者后台,按照提示开始创建应用;2.开通服务在使用TDS实名认证和防沉迷服务之前,需要在上面创建的应

  9. Postman测试简单操作 - 2

    1、接口请求基本操作1.1例子tips在view的选项可以zoomin调整窗口字帖大小。1、创建一个测试的workspace,并命名为test2、test后面新增一个addrequest3、选择发送GET,URL为一个开源的https://api.apiopen.top/api/sentences获取每日一句4、点击send查看内容Tips:如果提示出现Error:tunnelingsocketcouldnotbeestablished,statusCode=407错误,参照以下解决办法)关于tunnelingsocketcouldnotbeestablished,cause=getaddri

  10. ruby-on-rails - RailsTutorial - 第 8.4.3 章 - 在集成测试中添加用户后未清除测试数据库 - 2

    我被这个难住了。到目前为止教程中的一切都进行得很顺利,但是当我将这段代码添加到我的/spec/requests/users_spec.rb文件中时,事情开始变得糟糕:describe"success"doit"shouldmakeanewuser"dolambdadovisitsignup_pathfill_in"Name",:with=>"ExampleUser"fill_in"Email",:with=>"ryan@example.com"fill_in"Password",:with=>"foobar"fill_in"Confirmation",:with=>"foobar"cl

随机推荐