• 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、刷新网页,进行录制请求;

  • 相关阅读:
    M、V、VM分别代表什么?
    HTML行内元素、块状元素、行内块状元素的区别
    野指针与僵尸对象
    mybatis 引入java 常量
    mybatis 分页默认500条
    java 引用
    java 查看类大小
    java 排序多个条件
    java for循环批次处理
    Cause: java.lang.IllegalArgumentException: invalid comparison: java.util.Date and java.lang.String
  • 原文地址:https://www.cnblogs.com/sjl179947253/p/7701262.html
Copyright © 2020-2023  润新知