菜鸟postman接口测试_postman 接口测试(转)

本文转载自testerhome;

作者:xinxi1990 ;

原文链接:https://testerhome.com/topics/18719;

转载以分享知识为目的,著作权归原作者所有,如有侵权,请联系删除。

postman使用

创建用例集

启动postman以后,会看到这个控制面板.

d5ea8e94d91aa06267b7929cc9ceda9b.png

点击Request是创建一个Request测试请求,但是需要创建用例集保存这个请求.

b848056a4a345a9814fc320ee2db769d.png

点击Collection是创建一个用例集来保存测试请求.

创建Collection完成后,会在左侧生成用例集文件架,每次创建的测试接口都要保存到用例集中.

36b35c73660c285da614d6bcf0f10366.png

第一个接口测试

创建get请求为例,通常需要写url、params、headers,会把params拼接到url末尾.

391552c4a19a18ba7342a694c506466b.png

点击send按钮并且请求成功,会展示响应结果.

ac0c367d20596ccbb629e136bc9b0cda.png

创建post请求为例,通常需要写url、body、headers等参数,body参数格式一般是form或者json格式.具体body使用那个格式,需要按照接口文件中的参数.

736bcaa9b8ba1f69b702734313fff50c.png

接口断言

点击Tests编写测试断言

fcbd1e6a7f77643a62fa129379429279.png

断言响应时间

pm.test("Response time is less than 200ms", function () {    pm.expect(pm.response.responseTime).to.be.below(200);});// 断言响应事件小于200ms

断言状态码

pm.test("Successful POST request", function () {    pm.expect(pm.response.code).to.be.oneOf([200,202]);});// 断言状态码200-202区间

断言响应中包含某个字符串

pm.test("Body matches string", function () {    pm.expect(pm.response.text()).to.include("ok");});// 断言响应中包含"ok"

断言响应中的字段等于某个值

pm.test("message test", function () {    var jsonData = pm.response.json();    pm.expect(jsonData["message"]).to.eql("ok");});// 断言响应中"message" = ok"

断言响应中的字段不等于某个值

var jsonData = JSON.parse(responseBody);tests["message不为bad"] = jsonData["message"] != "bad";// 断言响应中"message" != bad"

断言响应中的列表长度

pm.test("data list test", function () {    var jsonData = pm.response.json();    pm.expect(jsonData["data"].length).to.eql(41);});// 断言响应中"list"的字段长度

断言响应中的列表中第几个元素的字段值

pm.test("data list 0 test", function () {    var jsonData = pm.response.json();    pm.expect(jsonData["data"][0]["time"]).to.eql("2018-11-28 17:27:41");});// 断言响应中"list 0的"的time字段的值

json schema验证

tv4是postman内置的JSON Schema验证库,参考:https://geraintluff.github.io/tv4/

responseBody如下==:==

{    "errCode": 0,    "errMsg": "",    "data": {        "id": 3210,        "title": "",
const customerSchema = {  "type": "object",          "properties": {    "errCode": {        "type": "integer",        "minimum": 0,        "maximum": 3,        "minLength": 2,        "maxLength": 3    },    "errMsg": {"type": "string"},  }};var customer = JSON.parse(responseBody);// console.log(customer);tests["Valid Data1"] = tv4.validate(customer, customerSchema);//验证json中的errCode类型是integer,并且验证最小值和最大值区间、验证长度区间

以上是常用断言方法,更多使用参考:https://learning.getpostman.com/docs/postman/scripts/test_scripts/

测试前准备

发送请求之前往往需要准备数据,比如设置header中参数或者计算签名.

使用Pre-request Script可以编写一些准备数据.

d23ee92c1427646c4995680dfb6f2c9f.png

在header头中引入刚刚设置{{timestamps}}环境变量.

66bf1cb91b1fe1b6e92d24a1c7356be9.png

可以看到header中已经填写了时间戳参数.

4672341be66db20142bafa22419e6d6d.png

请求前编写加密算法

var username = "test";var pwd = "123321";var base64Str = CryptoJS.enc.Utf8.parse(username+pwd);var token = CryptoJS.enc.Base64.stringify(base64Str);postman.setGlobalVariable("token",token);console.log(token);// 使用账号+密码的base64位加密算法

加密生成的字符串

ec661c36adc63508bf1001fb79b39eba.png

header头中携带生成加密的token变量

383ce83d6bb0aa4f4212580c14c5d40a.png

服务端使用base64位解密

02010a4e56dcb1ae0b6f895e2e6560ed.png

接口环境变量

b20309c1e04b4ac1e3b53069e9942afd.png
c5d4726487af91b77bc14b17e644e586.png
f1839d5fb35c8d3b407e3cf6e675d71a.png

接口参数化

全局变量

670e6a521fdcbffc7403798962e7d365.png

局部变量

使用{{}}作为变量

b4b46c3b6ca689a84a75f2ccb35db753.png

参数化文件

.csv文件格式,第一行是变量名,后面是具体赋值.

e9d30c2cc143c9a0fd9dfe2eee8e40f2.png

选择参数化文件

74f3da1ec10fd2f6fbc875f14be694e2.png

接口参数传递

在登录接口的响应数据中获取token值.

394f809715b71f86f14057c565742173.png

把token传递给第二个接口中的header头中.

a3296342d3a02e3049fad3eeeab5a738.png

第二个接口中的header头中已经拿到了token.

16a8f11910c0ddb3ccd9584097fb5a4c.png

其他常用的方法

设置环境变量

pm.environment.set("variable_key", "variable_value");

设置全局变量

pm.globals.set("variable_key", "variable_value");

获取环境变量

pm.environment.get("variable_key");

获取全局变量

pm.globals.get("variable_key");

清除环境变量

pm.environment.unset("variable_key");

清除全局变量

pm.globals.unset("variable_key");

newman使用

官方教程

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

安装

npm install -g newman

运行

简单运行

newman run 接口测试.postman_collection.json

打印循环次数、请求次数、断言次数、耗时等,但是没有输出文件.

040d22bb49315ca090d51080b8e8435a.png

循环执行

newman run 接口测试.postman_collection.json -n 2
cc8df806377f9e689f0ef243061c7853.png

参数化

-d是参数化文件

newman run 接口参数化测试.postman_collection.json -d 参数化数据.csv
db84ca021b190f6166d5776698c1f693.png

报告

jenkins持续集成

在jenkins中创建自由风格的job

8bf6bf27657a3a0c0f90b3afd9b199ba.png

job配置

构建shell配置

newman run 文件路径/接口测试.postman_collection.json--reporters cli,html,json,junit--reporter-json-export jsonOut.json--reporter-junit-export xmlOut.xml--reporter-html-export htmlOut.html

构建后报告配置参数

**/*.xml
2abf76bc4577b86e0ee24012c24a3391.png
3bccbaa62ce748ee73a04535518ac514.png
37031824354a9e48bf3ac8e70e762a8d.png
1aece79ac4d532ae9ca2758eec243cb9.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/394276.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

求绝对值最小的数

题目 有一个升序排列的数组&#xff0c;数组中可能有正数&#xff0c;负数或0. 求数组中元素的绝对值最小的数. 例如 数组{-10&#xff0c; 05&#xff0c; 02 &#xff0c;7&#xff0c;15&#xff0c;50} 绝对值最小的是-2 解答 #include <bits/stdc.h> using namespac…

leetcode面试题 04.02. 最小高度树(深度优先搜索)

给定一个有序整数数组&#xff0c;元素各不相同且按升序排列&#xff0c;编写一个算法&#xff0c;创建一棵高度最小的二叉搜索树。 public TreeNode sortedArrayToBST(int[] nums) {if(nums.length0) return null;return BST(nums,0,nums.length-1);}public TreeNode BST(int[…

IT团队如何赢得尊重?

本文讲的是IT团队如何赢得尊重,在传统观念中&#xff0c;作为企业的IT人&#xff0c;似乎都有一种挥之不去的消极情绪&#xff1a;能够为企业带来直接利益的业务部门才是企业核心&#xff0c;而作为技术支撑的IT部门&#xff0c;则是作为附属而存在。 我们经常也会听到一些企业…

mysql 官方镜像_运行官方mysql 镜像

//目前最新的为mysql 8sudo docker run -itd --restart unless-stopped --nethost --name mysql -p3306:3306 -e MYSQL_ROOT_PASSWORDroot mysqlmysql 官方docker 需要重新设置密码&#xff0c;否则无法远程连接step1 : docker exec -it [容器id] /bin/bashstep2 : 登陆mysql &…

我如何使用React,Redux-Saga和Styled Components构建NBA球员资料获取器

by Jonathan Puc乔纳森普克(Jonathan Puc) 我如何使用React&#xff0c;Redux-Saga和Styled Components构建NBA球员资料获取器 (How I built an NBA player profile fetcher with React, Redux-Saga, and Styled Components) Hello, all! It’s been a while since I built so…

vb 数组属性_VB中菜单编辑器的使用讲解及实际应用

大家好&#xff0c;今天我们共同来学习VB中菜单方面的知识。VB中菜单的基本作用有两个&#xff1a;1、提供人机对话的界面&#xff0c;以便让使用者选择应用系统的各种功能&#xff1b;2、管理应用系统&#xff0c;控制各种功能模块的运行。在实际应用中&#xff0c;菜单可分为…

《JAVA程序设计》_第七周学习总结

一、学习内容 1.String类——8,1知识 Java专门提供了用来处理字符序列的String类。String类在java.lang包中&#xff0c;由于java.lang包中的类被默认引入&#xff0c;因此程序可以直接使用String类。需要注意的是Java把String类声明为final类&#xff0c;因此用户不能扩展Stri…

leetcode109. 有序链表转换二叉搜索树(深度优先搜索/快慢指针)

给定一个单链表&#xff0c;其中的元素按升序排序&#xff0c;将其转换为高度平衡的二叉搜索树。 本题中&#xff0c;一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。 解题思路 先将链表转换成数组&#xff0c;再构造二叉搜索树 代码 …

NeHe OpenGL教程 第三十七课:卡通映射

转自【翻译】NeHe OpenGL 教程 前言 声明&#xff0c;此 NeHe OpenGL教程系列文章由51博客yarin翻译&#xff08;2010-08-19&#xff09;&#xff0c;本博客为转载并稍加整理与修改。对NeHe的OpenGL管线教程的编写&#xff0c;以及yarn的翻译整理表示感谢。 NeHe OpenGL第三十七…

SDN交换机在云计算网络中的应用场景

SDN的技术已经发展了好几年了&#xff0c;而云计算的历史更长&#xff0c;两者的结合更是作为SDN的一个杀手级应用在近两年炒得火热&#xff0c;一些知名咨询公司的关于SDN逐年增加的市场份额的论断&#xff0c;也主要是指SDN在云计算网络中的应用。 关于SDN在云计算网络中的应…

sql server 里面怎么支持数字使用双引号_国查:用中文编写SQL

这两天被 文言(wenyan-lang)刷屏了&#xff0c;这个项目在于使用文言文进行编程&#xff0c;我打算蹭个热度&#xff0c;把年初的作品再捞一捞&#xff0c;即中文SQL。1. 文言Wenyan&#xff1a;吾有一數。曰三。名之曰「甲」。為是「甲」遍。吾有一言。曰「「問天地好在。」」…

七日掌握设计配色基础_掌握正确的基础知识:如何设计网站的导航,搜索和首页...

七日掌握设计配色基础by Anant Jain通过Anant Jain 掌握正确的基础知识&#xff1a;如何设计网站的导航&#xff0c;搜索和首页 (Get the basics right: how to design your site’s navigation, search, and homepage) 一个7分钟的指南&#xff0c;使这三个基础组件正确无误。…

python渲染光线_python模板渲染配置文件

python的mako、jinja2模板库&#xff0c;确实好用&#xff01;这里做个笔记&#xff0c;好记性不如烂笔头。#!/usr/bin/env python#encodingutf-8import sys,yaml # 配置文件使用yaml格式from mako.template import Template # 加载mako库的Templat…

leetcode114. 二叉树展开为链表(深度优先搜索)

给定一个二叉树&#xff0c;原地将它展开为一个单链表。例如&#xff0c;给定二叉树1/ \2 5/ \ \ 3 4 6 将其展开为&#xff1a;1\2\3\4\5\6代码 class Solution {public void flatten(TreeNode root) {flat(root);}public TreeNode flat(TreeNode root) {if(rootnull)…

eclipse新建web项目

需要点击File—>New—>Other…在Web文件夹下找到Dynamic Web Project—>Next修改server端口可以在启动项目后访问地址是端口号项目名转载于:https://juejin.im/post/5cb4999df265da037b610545

idea tips

AltInsert 自动出现generate ,,里面有构造方法&#xff0c;getter,setter... CtrlO,重写方法 CtrlI...自动出现接口的方法 转载于:https://www.cnblogs.com/bin-lin/p/6247538.html

革新以太网交换机架构 全光网络的风刮进园区

全光网络的风正在刮进园区网&#xff0c;众所周知&#xff0c;光纤入户发展迅速&#xff0c;随着PON&#xff08;无源光纤网络&#xff09;技术在运营商通信网络的大规模使用&#xff0c;PON相关产业链逐步成熟&#xff0c;这也使得PON技术逐步在企业园区网得到应用。 基于铜线…

mysql loop循环实例_MySql CURSOR+LOOP循环-使用小实例

转载自https://blog.csdn.net/starinbrook/article/details/77078126转载自https://blog.csdn.net/makang456/article/details/53896346/【简介】游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。游标充当指针的作用。尽管游标能遍历结果中的所有行&am…

react数据从本地读取_如何将从Google表格读取的React应用程序部署到Netlify

react数据从本地读取In this tutorial, we’re going to cover how to connect to a spreadsheet hosted on Google, display that information inside a React application, and deploy it to Netlify.在本教程中&#xff0c;我们将介绍如何连接到Google托管的电子表格&#x…

leetcode743. 网络延迟时间(迪杰斯特拉算法)

有 N 个网络节点&#xff0c;标记为 1 到 N。 给定一个列表 times&#xff0c;表示信号经过有向边的传递时间。 times[i] (u, v, w)&#xff0c;其中 u 是源节点&#xff0c;v 是目标节点&#xff0c; w 是一个信号从源节点传递到目标节点的时间。 现在&#xff0c;我们从某个…