1、接口
应用程序编程接口(API:Application Programming Interface) 以http协议形式提供,定义了输入、输出、功能描述的服务
2、http协议
1、简介特点
协议:计算机通信网络中两台计算机之间进行通信必须共同遵循的规则或规定。
HTTP 协议(HyperText Transfer Protocol,超文本传输协议)是一种规定了浏览器和服务器之间通信的规则,是用于从 WWW 服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示等 。
HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP 通道,简单讲是 HTTP 的安全版。
2、URL语法格式
URL(统一资源定位符) 概念:互联网上资源的地址、位置。每一个资源都有一个唯一的URL 格式:协议://主机地址/路径?参数名1=参数值1&参数名2=参数值2 比如:http://www.baidu.com/s?wd=1 比如:http://www.jjwxc.net/onebook.php?novelid=3272242
3、get/post请求
get:提交的数据显示在地址栏,不安全;提交的数据量有限制;不重要的数据使用get post:隐式提交数据,更安全;没有数据量大小的限制;重要数据使用post
4、常见响应状态码
状态码有三位数字组成,第一位数字定义了响应类型,有5种可能取值。 1xx:指示信息–表示请求已接收,继续处理 2xx:成功–表示请求已被成功接收、理解、接受 3xx:重定向–要完成请求必须进行更进一步的操作 4xx:客户端错误–请求有语法错误或请求无法实现 5xx:服务端错误–服务器未能实现合法的请求
5、常见状态代码、状态说明
200 OK //客户端请求成功
400 Bad Request //客户端请求有语法错误,不能被服务器所理解 401 Unauthorized //请求未经授权,这个状态代码必须和 WWW-Authenticate 报头域一起使用 403 Forbidden //服务器收到请求,但是拒绝提供服务 404 Not Found //请求资源不存在,eg:输入了错误的 URL
500 Internal Server Error //服务器发生不可预期的错误 503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常
6、restful风格
按照一定的规则写出的易读易懂的api文档 目的是让前端、后端、测试三方在工作的时候有据可循 提升开发和测试的效率(非强制要求,软要求) 增删改查四大功能的语法风格: 查
增
改
- 方法:put
- 响应码:200或201 + 修改的数据
删
3、http请求
1、请求行
- 作用:指定请求方法、请求资源
- 语法格式:请求方法(空格)URL(空格)协议版本(\r\n)
- 请求方法:
- get:查询–没有请求体
- post:新增–登录注册主要使用、有请求体
- put:修改–有请求体
- delete:删除–没有请求体
- URL:数据资源的定位符。协议://域名:端口/资源路径?查询参数&查询参数&···
- 协议版本:
- http1.1、http1.2、http2.0
- 主要使用http1.1
2、请求头
- 作用:向服务器描述客户端(浏览器)的基本信息
- 语法:k,v键值对
- User-Agent:向服务器描述浏览器的类型
- Content-Type::向服务器描述请求体的数据类型
3、请求体
- get、delete请求方法,没有请求体
- post、put请求方法,有请求体
- 请求体的数据类型,受请求头中的Content-Type的值影响
4、http响应
- 由服务器回发给客户端
- 规定了 服务器回发给客户端的 数据的 语法格式
1、响应行
- 语法格式:协议版本(空格)状态码(空格)状态码描述(\r\n)
- 协议版本:http1.0/http1.1/http2.0、常用http/1.1
- 状态码:针对http请求,响应的状态
- 1xx :信息类,请求需要进一步访问
- 2xx:成功,200 ok
- 3xx:重定向,数据资源需要重定向访问
- 4xx:客户端错误,404 Not found 文件资源不存在,403文件资源拒绝被访问(没有权限)
- 5xx:服务端错误
- 状态描述:对状态码的说明
2、响应头
- 作用:向客户端描述服务器的基本信息
- 语法:k:v键值对
- Content-Type:向客户端描述响应体的数据类型
3、响应体
- http响应报文,大多数,是有响应体
- 响应体的数据类型,受响应头中Content-Type的值影响
- 常见的类型:
5、基础使用
1、get请求
2、post错误登录
3、post正确登录
6、断言
- 利用自带的断言机制,帮助我们自动判断结果和实际结果是否一致
- 使用JavaScript脚本语言,写在Tests标签页汇总,在TestResult标签显示
1、Status code:Code is 200
// 断言响应状态码为200 pm.test(“Status code is 200”, function () { // postman的响应结果中有状态码200 pm.response.to.have.status(200); });
// pm postman的一个实例 // test postman实例的一个方法,有两个参数 // 参数1 Status code is 200 断言完成后,给的提示信息 // 参数2 匿名函数调用
2、Responsem body: Contains string
// 断言响应体是否包含某个字符串 pm.test(“Body matches string”, function () { // postman实例预期结果中包含 ”10000“ 字符串 pm.expect(pm.response.text()).to.include(“10000”); });
3、Responsem body:JSON value check
//响应正文:JSON值检查 // JSON数据:{ “属性名1”:“属性值1” , “属性名2”:“属性值2” } pm.test(“Your test name”, function () { var jsonData = pm.response.json(); pm.expect(jsonData.value).to.eql(100); });
// var jsonData=pm.response.json(); // 定义一个变量,名称为jsonData,值为:json格式的响应体数据 // pm.expect(jsonData.value).to.eql(100); // postman预期json格式的响应结果中xxx(key)的值为xxx // value的取值:success、code、message // to.eql(100)中的值:true、10000、”操作成功“ // pm.expect(jsonData.code).to.eql(10000);
4、Responsem body:Is equal to a string
// 响应正文:等于一个字符串 pm.test(“Body is correct”, function () { // postman响应结果中有响应结果 response_body_string pm.response.to.have.body(“response_body_string”); });
5、Responsem headers:Content-Type header check
// 响应头:Content-Type头检查 // 判断响应头中是否包含指定的头标签 pm.test(“Content-Type is present”, function () { pm.response.to.have.header(“Content-Type”); }); pm.test(“Content-Type is present”, function () { pm.response.to.have.header(“Content-Type”,“application/json;charset=UTF-8”); });
7、变量
1、全局变量
- 概念:全局变量是全局唯一的,不可重复定义的变量
- 代码设置全局变量
- 语法:pm.globals.set(“全局变量名”,全局变量值)
- var age=18 //定义js语法的变量
- pm.globals.set(“globals_age”,age)
- 界面获取全局变量
- 语法:{{全局变量名}}
- 用在:查询参数、请求头、请求体中
- 代码获取全局变量
- 语法:var 接受变量名=pm.globals.get(“全局变量名”)
- var age=pm.globals.get(“globals_age”)
2、环境变量
- 概念
- 一个变量只能属于某个环境,在某一环境中变量不可重复定义
- 在环境与环境之间可以定义重复的变量
- 一个环境可以包含多个环境变量
- 常见环境分类:开发环境、测试环境、生产环境
- 代码设置环境变量
- 语法:pm.enviroment.set(“环境变量名”,环境变量值)
- var age=18 //定义js语法的变量
- pm.enviroment.set(“enviroment_age”,age)
- 界面获取环境变量
- 语法:{{环境变量名}}
- 用在:查询参数、请求头、请求体中
- 代码获取环境变量
- 语法:var 接受变量名=pm.enviroment.get(“环境变量名”)
- var age=pm.enviroment.get(“enviroment_age”)
8、前置脚本
1、请求前置脚本
- 书写在 Pre-request Script 标签中
- Postman在http请求发送之前,会自动执行该脚本中的代码
2、案例:调用百度首页接口,传时间戳给服务器
时间戳:表示当前系统时间,表示方式:从1970年1月1日00:00:00-现在所经历的秒数
3、工作原理图析
9、关联
1、概念
用来解决接口和接口之间调用的依赖关系,需要借助全局变量、环境变量来解决关联问题
2、案例:获取A接口提取响应结果中的城市,将城市名给百度接口搜索接口使用
10、Postman生成测试报告
1、npm -V 2、npm install -g newman 3、newman -v 4、npm install -g newman-reporter-htm 5、点击postman用例集的export,导出本地文件 用例集.json 6、打开命令行工具输入 newman run pon.json 可在命令行输出测试报告 7、打开命令行工具输入 newman run tests.json -r html --reporter-html-export 测试报告.html 生成html
newman run tests.json -r html -e 环境变量文件 -d 数据文件 -r html --reporter-html-export 测试报告.html -e 环境变量文件 -d 数据文件 两个参数,如果没有可以不写
8、执行结果
|