Postman接口测试教程【1】_安装更新及api请求

一、   安装与更新

1、安装的方式

安装:首先下载安装PostMan,打开PostMan官方网站,根据需求下载 Mac/Windows/Linux版本的Post应用程序,native版本(具有更好的扩展性,推荐使用):https://www.getpostman.com/

2、native app更新

步骤:File--->Settings--->Update--->Minor fixes

二、  Postman特点

创建 + 测试:创建和发送任何的HTTP请求,请求可以保存到历史中再次执行;
Organize(组织):使用Postman Collections为更有效的测试及集成工作流管理和组织APIs;
document(文档):依据你创建的Clollections自动生成API文档,并将其发布成规范的格式;
collarorate(同步):通过同步连接你的team和你的api,以及权限控制,API库;

三、发送api请求(V2EX API 接口:https://www.v2ex.com/p/7v9TEc53

1、请求Request

HTTP请求的四个部分是URL,请求的method,headers,body;

(1)、URL

URL输入字段存储先前使用的URL,输入URL时显示自动完成下拉列表;
单击 Params按钮,可输入URL添加键值对的参数,Postman将组合上述查询字符串中的所有内容;
如果URL中已显示参数,Postman会将自动分割成参数键值对;
注意:http://如果没有指定协议, Postman将自动添加到URL的开头;

注意:如果在输入参数时,没有自动decode到URL中,则可以选中参数右键后,选择EncodeURIComponent(一般都会自动填充的),同样也可以decode,将参数生成dictionary的形式(一般都会自动填充的);

 

(2)、Method:

使用控件下拉列表可以直接更改请求方法。请求Body编辑器区域将根据方法是否可以附加Body而改变; 

(3)、Headers

单击Headers将显示标题键值编辑器。您可以将任何字符串设置为头名称。自动完成下拉列表将在您输入字段时提供常见HTTP标头的建议。“Content-Type”标题的值也可以在自动完成的下拉列表中使用;

 

Header presets:可以在标题预设中将常用标题保存在一起;Presets--》选择“Manager presets”从头预设添加到您的请求预设右侧下拉列表;

(4)、Body

form-data:①、网页表单用来传输数据的默认格式,可以模拟填写表单,并且提交表单;
           ②、可以上传一个文件作为key的value提交(如上传文件),但该文件不会作为历史保存,只能在每次需要发送请求的时候,重新添加;
           ③、不支持使用自己的Content-Type上载多个文件;
x-www-urlencodedl:①、urlencode中的key-value会写入URL,from-data模式的key-value不明显写入URL,而是直接提交;
                   ②、这个编码格式不能上传文件;
raw:①、原始请求可以包含任何内容,除了替换环境变量,PostMan不会触及在原始编辑器中输入的字符串;
     ②、原始编辑器可设置格式化类型(Text、JavaScript、JSON、HTML、XML);
     ③、选择格式化类型后,点击“Beautify”进行格式化;
binary:①、二进制数据允许发送无法在Postman中输入的内容,可发送图像,音频、视频、文本文件;您也可以发送文本文件;
        ②、文件不会作为历史保存,只能在每次需要发送请求的时候,重新添加;
Pre-request Script:请求发送前,可进行一些脚本设置,如,设置或清除参数、变量;
Tests:定义发送Request之后,需要用脚本检测的内容,也就是Test case的内容;

(5)、Cookies

可以使用Cookie管理器编辑与每个域相关联的Cookie,可以在本机应用程序中管理Cookie;
见{Postman接口测试实例【1】_通过Cookies登录博客园}

 

2、响应Response

(1)、Body

Body标签:提供了几个工具来帮助您快速查看Response的Body。Body可以在三个视图中看到 - Pretty,Raw和Preview。
Pretty:①、格式化了JSON和XML,方便查看;
②、点击里面的URL,postman会创建一个request;
③、对于导航大响应,单击左侧的向下三角形(▼)以折叠大部分响应
④、json、HTML、XML、Text等;

Raw:text,原始视图只是一个响应体的大文本区域;可判断您的响应是否缩小;

preview:预览选项卡会在沙盒iframe中呈现响应。一些Web框架默认情况下返回HTML错误,预览模式在这里特别有用。由于iframe沙盒限制,JavaScript和图像在iframe中被禁用。可以显示返回图像;可以测试音频文件,PDF,zip文件或API抛出的任何内容;

(2)、Headers

Headers :显示为键值对。悬停在标题名称上可以根据HTTP规范给出对标题的描述。如果您发送HEAD请求,Postman将默认显示Headers 标签。

(3)、Response状态

Time:计算响应从服务器到达所花费的时间;
Size:响应大小;

 

五、断言Writing Test

设置全局变量;

设置环境变量;

拿到并处理请求的响应;

定义测试检查点和断言;

1、Clear a global variable:

①、清除一个全局变量;

②、postman.clearGlobalVariable(“variable.key”);

2、Clear an environment variable:

①、清除一个环境变量;

②、postman.clearGlobalEnvironmentVariable(“variable.key”);

3、Response body:Contains string:

①、response包含内容;

②、tests[“Body matches string”]=responseBody.has(“string_you_want_to_search”)

4、Response body:Convert XML body to a JSON Object:

①、将xml格式的response转换成json格式;

②、var jsonObject = xml2Json(responseBody);

5、Response body:Is equal to a string:

①、response等于预期内容;

②、tests[*Body is corret*] = resposeBody === *response_body_string*;

6、Response body:JSON value check:

①、json解析key的值进行校验;

②、tests[*Args key contains argument passed as url parament*] = ‘test’ in responseJSON.args;

7、Response headers:Content-Type header check:

①、检查response的header信息是否有被测字段;

②、tests[*Content-Type is present*] = postman.getResponseHeader(“Content-Type”);

8、Response time is less than 200ms:

①、响应时间判断;

②、tests[*Response time is less than 200ms*] = responseTime < 200;

9、Set an global variable:

①、设置全局变量;

②、postman.setGlobalVariable(“variable_key”,”variable_value”);

10、Set an environment variable:

①、设置环境变量;

②、postman.setEnvironmentVariable(“variable_key”,”variable_value”);

11、Status code:Code is 200:

①、判断状态码;

②、tests[“Status code is 200”] = responseCode.code !=400;

12、Status code:Code name has string:

①、检查code name是否包含内容;

②、tests[“Status code name has string”] = responseCode.name.has(“Created”);

13、Status code:Successful POST request:

①、成功的post请求;

②、tests[“Successful POST request”] = 201 ||responseCode.code ===202;

14、Use Tiny Validator for JSON data:

var schema = {

  "items": {

    "type": "boolean"

  }

};

var data1 = [true, false];

var data2 = [true, 123];

pm.test('Schema is valid', function() {

  pm.expect(tv4.validate(data1, schema)).to.be.true;

  pm.expect(tv4.validate(data2, schema)).to.be.true;

});

六、测试集合Collections

1、数据驱动的接口自动化测试

2、命令行中运行

1、命令行中运行:可以在无UI界面的服务器上运行;可以在ci持续集成系统上运行;

2、运行准备:导出collection;安装nodejs和npm(国内cnpm);安装newman;

3、生成测试报告:CLI reporter;JSON reporter;HTML reporter;JUnit reporter;

 

七、变量

 1、环境变量environment:比如可以将测试domain设置成环境变量;

2、全局变量Global variable:实现接口请求的参数依赖于其他接口的返回,比如可以将错误信息设置成全局变量;

3、Local本地变量:一般可以在sandbox中定义;

4、Data:测试数据中导入的变量,也就是所谓的参数化;

注意:当全局变量和环境变量冲突时,环境变量覆盖全局变量;

八、   在test suite中运行test case

1、Environment :环境变量;

2、Iterations:重复运行次数;

3、Delay:间隔时间,用例与用例间的间隔时间;

4、Data:外部数据加载,即用例的参数化,可以与Iterations结合起来用,实现参数化,也就是数据驱动;

 

 

十、   Jekins+postman+newnam

1、Postman导出用例集合和导出环境变量;

2、newman运行:①、无环境变量:newman run D:API.postman_collection.json;

             ②、有环境变量:newman run D:API.postman_collection.json –environment D:postnam_environment.json;

3、执行服务器上的Collection:newman –u https://www.getpostman.com/collections/cb208e7e64056f5294e5;

4、jenkins:①、构建;②、构建后发邮件;

十一、   Interceptor录制

1、先在浏览器安装Interceptor,并打开;

2、postman同时打开Interceptor;

3、刷新网页,进行录制请求;

原文地址:https://www.cnblogs.com/sjl179947253/p/7701262.html