初识POSTMAN,基础使用学习笔记

前言:

鉴于本人学完就忘的毛病,故将学习过程整理成笔记的形式供自己之后温故查阅。

一、下载地址

Download Postman | Get Started for Free

  • 下载完成后直接安装,不需要注册登录
  • 点击下方的“skip and go to the app ”进入应用
  • 默认功能基本够用,不必要强求高级用法

二、官方学习文档

https://learning.postman.com/docs/getting-started/introduction/

postman可以支持如下场景:

  • 快速的调用接口,方便调试;
  • 通过不同的参数去测试接口的输出;
  • 接口调用可以保存下来反复运行;
  • 运行过程中支持断言,可以设置测试目的,将预期结果和实际结果进行比较 

三、chrome APP 与native APP的区别

***chrome app目前已经不再维护了***

  • cookies

        区别:native版本可以直接操作cookie,而chrome版本需要安装扩展

  • Built-in proxy

        native版本自带proxy,可以用来抓包

        native版本带有菜单栏,使用更方便

  • Restricted headers

        有一些headers在chrome APP 上是受限的,比如 Origin and User-Agent

        而native版本支持随意修改

  • Don't follow redirects option

        native版本才有这个选项,可以测试3××之类的请求响应,支持更多的测试场景

  • Postman console

        native版本自带,调试打印更方便

四、发送请求

发送一个简单的get请求

V2EX API 接口文档

https://www.v2ex.com/p/7v9TEc53

最热主题接口(非鉴权api)

https://www.v2ex.com/api/topics/hot.json

五、http消息

postman目前只支持http协议的接口

HTTP消息是服务器和客户端直接进行交互数据的方式

有两种类型的消息

  • 请求:由客户端发送用来触发服务器上的动作
  • 响应:来自服务器的应答

相关文档:

HTTP 消息 - HTTP | MDN

http请求的构成

起始行:POST  /  HTTP/1.1

  • 一个HTTP方法,一个动词(像GET,PUT或者POST)或者一个名词(像HEAD或者OPTIONS),描述要执行的动作
  • 请求目标(request target),通常是一个URL,或者协议、端口和域名的绝对路径,通常以请求的环境为特征
  • HTTP版本(HTTP version),定义了剩余报文的结构,作为对期望响应版本的指示符;

Headers:一串由冒号分割的key:value构成的字符串,用于配置

  • 来自请求的HTTP headers 遵循和HTTP header相同的基本结构:不区分大小写的字符串,紧跟着的冒号“:”和一个结构取决于header的值,整个header(包括值)由一行组成,这一行可以相当长

Body

  • 不是所有的请求都有一个body,例如获取资源的请求,GET,HEAD,DELETE和OPTIONS,通常是不需要body的 
  • 有些请求将数据发送到服务器以便更新数据,常见的有POST请求(包含HTML表单数据)

http响应的构成

起始行  被称作 状态行

  • HTTP协议版本,通常为 HTTP/1.1
  • 状态码(status code),表明请求是成功还是失败。常见的状态码 是200(ok) 404(not found) 或者302
  • 状态文本(status text),一个简短的、纯粹的信息,通过状态码的文本描述,帮助人们理解该http消息

Headers:一串由冒号分割的key:value构成的字符串,用于配置

  • 响应的HTTP headers 遵循和任何其他header相同的基本结构:不区分大小写的字符串,紧跟着的冒号“:”和一个结构取决于header的值,整个header(包括值)表现为单行形式
  • 可以设置客户端的cookie

Body

不是所有的响应都有一个body,例如获取资源的请求,具有状态码(如201或者204)的响应,通常不会有body

  • 2--  200成功,201请求一个资源并成功创建或更新
  • 3--  301 重定向到其他接口,包含具体重定向的接口  302
  • 4--  400 api中参数不正确或不合法   401需要鉴权的接口,未授权访问时  403 没有权限   404 没有找到该资源
  • 5--  500 服务器有错误,大多为bug  502 配置Nginx不正确,bug

六、增加断言

断言 预期与实际结果的比较

预期==实际  用例通过(PASS),写入报告

预期!==实际 用例失败(FAIL),写入报告

测试用例编写原则,3A原则

  • Arrange:分配测试数据,初始化测试对象
  • Act:通过不同的参数调用被测的功能,即测试步骤
  • Assert: 断言,测试目的**

断言的位置  响应中  code  body

写测试用例:postman的Test功能

如下图示,可以获取常用库信息

sandbox,可以执行js的隔离的环境,作用,引用公共库;操作环境变量和全局变量;动态变量;操作cookie;获取和查看请求及响应;读取数据文件

  • 设置全局变量    
  • 设置环境变量    
  • 拿到并处理请求的响应
//chai的语法
pm.test("状态码应该是200", function () {
    pm.response.to.have.status(200);
});
pm.test("必须返回10条数据", function () {
    var res = pm.response.json();//将结果转换为json格式,赋值给变量res
    console.log(res.length);//调试打印响应数据长度
    pm.expect(res.length).to.eql(10);//获取响应长度并与10进行比较
});

   

  • 定义测试检查点和断言

七、UI测试

思路

  • 发请求拿到网站的响应 HTML
  • 解析HTML标签,判断一些元素是否现显示

目的

快速检测ui是否正确

用到的库 cheerio

cheerio - npm

The industry standard for working with HTML in JavaScript | cheerio

使用示例

http://www.testclass.net/all

  • 当前页面共有40门课程,利用class   card-title定位页面上这些课程

  • 设置断言
var cheerio = require('cheerio');//引入并加载cheerio
var cheerio = require('cheerio');
var $ = cheerio.load(responseBody);
//下方测试用例中含有两个断言,可以做页面的静态检测
pm.test("结果中必须包含40门课程",function(){
    pm.response.to.be.success;//1.返回值是200
    pm.expect($('.card-title').length === 40);//2.expect中的表达式为true,页面上必须有40个class=card-title
});
  • 查看断言结果

总结

postman可以做ui功能测试

  • 前台是使用者具有一定的javascript代码功底
  • 熟悉类似于jquery的操作

postman做ui功能测试的局限

八、请求方法

RESTFUL风格:资源视角风格

  • GET           获取资源,一组或一个
  • POST        创建资源,一个或一组
  • PUT           update一个资源
  • DELETE    删除一个方法
  • PATCH      update一个资源

Postman 8.0.5获取示例数据

创建用户后,搜索“Published Postman Templates”,会有很多示例数据参考

例如 Postman API 、Postman Echo中的Request Methods等,可以参考官方示例用法设置不同的请求

九、Cookie

Postman中可以直接添加cookie、查看响应中的cookie

cookie的获取

示例

console.log(pm.cookies.get('foo1'))

十、鉴权方式

basic authenticaion

https://postman-echo.com/basic-auth

不同的形式

Token设置

十一、Collection的作用

Collection是一个容器,作用如下:

  • 组织业务逻辑 :每个collection是一个测试集合,每一个collection下可以定义文件夹,每个文件夹可以作为一个模块
  • 导入导出
  • 监控和mock server等高级功能,付费的

十二、变量

为什么要使用变量,api测试时根据不同场景更加灵活,引用形式{{var_name}} 差值的方式

postman变量作用域

  • Environment:环境变量,比如可以将测试域名设置为环境变量
  • Global:全局变量,比如可以将错误提示信息设置为全局变量
  • Local:本地变量,一般可以在sandbox中定义,只在当前运行有效
  • Data:测试数据中导入的变量,也就是参数化

管理全局变量和环境变量

环境变量使用示例

https://www.v2ex.com/api/nodes/show.json?name=python

  • 添加环境变量

  • 环境变量配置

  • 引用环境变量

  • 设置不同的环境变量

全局变量使用示例

  • 添加全局变量

  • 全局变量配置

  • 查看请求中变量,此时未选中环境变量,默认已经修改为全局变量

  • 变量同名时,环境变量中的值可以覆盖掉全局变量中的值

将接口响应传递为下一个接口的入参

//将数据解析成json格式

var resdata=JSON.parse(responseBody);
//获取access_token值
var 变量名=resdata.响应字段key;
//设置成环境变量
pm.environment.set("变量名", 变量名);

十三、运行collection

保存数据到collocation

  • 设置断言,获取环境变量并判断

nodename = pm.environment.get('nodename');//获取环境变量
pm.test("状态码应该是200", function () {
    pm.response.to.have.status(200);
});
pm.test("返回值的name必须和参数中的name一致", function () {
    var res = pm.response.json();
    pm.expect(res.name).to.eql(nodename);//将响应中的结果数据和变量值进行比较
});
  •  运行结果如下

  • 保存请求到collocation

运行collection结合环境变量

  • 运行配置

  • 运行结果

运行collocation,通过数据驱动实现

  • 通过数据驱动传参,构造三组测试数据

var obj = [{nodename:'php'},{nodename:'python'},{nodename:'qna'}]
JSON.stringify(obj)

将结果[{"nodename":"php"},{"nodename":"python"},{"nodename":"qna"}]复制到文件testdata.json并保存

  • 在运行界面加载该文件

(注:若既有文件又有环境变量,运行时优先以testdata文件中的值为准)

  • 配置说明

  • 修改请求中的断言,保存

  • 运行collocation,查看结果

从命令行中运行collocation

运行准备

  • 导出collocation

  

  • 安装nodejs和npm(Nodejs下的包管理器) 

下载地址下载 | Node.js,下载安装后自带npm

  • 安装newman

安装过程有点慢,安装完成后如下所示,newman -h查看具体用法

运行及生成测试报告

  • CLI reporer
  • JSON reporter
  • HTML reporter
  • Junit reporter

示例

newman run .\v2ex.postman_collection.json -d .\testdata.json -r html

  

报错解决方案

报错1、“newman : 无法加载文件 C:\Users\...\AppData\Roaming\npm\newman.ps1,因为在此系统上禁止运行脚本”

解决方法如下:

  • 以管理员身份运行命令行cmd
  • 更改策略,命令行输入set-ExecutionPolicy RemoteSigned修改改权限为A,在输入 get-ExecutionPolicy 查看当前的状态

报错2、newman: could not find "html……

解决方法:npm install -g newman-reporter-html

十四、导出python脚本

导出不同语言的脚本

导出python requests框架的脚本

复制脚本如下

import requests
import unittest

class V2exAPTTestCase(unittest.TestCase):
	def test_node_api(self):
		url = "https://www.v2ex.com/api/nodes/show.json"
		payload={"name":"php"}
		headers = {}
		for nodename in ['php','python','qna']:		
			response = requests.request("GET", url, headers=headers, params={'name':nodename}).json()
			self.assertEqual(response['name'],nodename)

if __name__=='__main__':
	unittest.main()

运行

python .\v2ex_api_test_case.py

十五、导出java代码

  • 导出成java的OKhttp代码
  • 使用Junit进行接口自动化测试
  • 使用fastJSON解析json字符串

十六、其他设置

更新

postman默认是自动更新的。

打开设置 file-settings

界面说明

卸载重装

卸载后删除如下两个目录下的postman文件夹

  • C:\Users\用户名\AppData\Roaming
  • C:\Users\用户名\AppData\Local

删除完成后重新安装

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
学习使用Postman可以按照以下步骤进行: 1. 下载和安装Postman:访问Postman官方网站(https://www.postman.com/)下载适用于你的操作系统的Postman应用程序,并按照安装指南进行安装。 2. 创建一个请求:打开Postman应用程序后,你会看到一个简单的界面。在"Enter request URL"文本框中输入API的URL。选择HTTP方法(GET、POST等),并设置请求参数、请求头和请求体等。 3. 发送请求:点击"Send"按钮发送请求。你将在下方的"Response"面板中看到服务器返回的响应。 4. 验证和断言:在响应中验证你的API是否按预期工作。可以使用断言来检查响应的状态码、响应体中的特定字段值等。 5. 使用环境变量:Postman支持使用环境变量来管理不同环境下的请求URL、身份验证令牌等信息。你可以创建全局或局部的环境变量,并在请求中引用它们。 6. 创建和运行集合:将相关的请求组织成集合,以便于管理和执行。你可以创建文件夹、添加请求到集合中,并设置执行顺序和依赖关系。 7. 共享和协作:Postman提供了共享和协作功能,可以与团队成员分享集合、环境变量等,并进行版本控制和协同编辑。 8. 进一步学习Postman有丰富的文档和教程资源,你可以访问Postman官方网站的学习中心(https://learning.postman.com/)来深入了解更多功能和用法。 通过实际练习和探索,你可以更好地掌握Postman使用技巧和功能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值