zoukankan      html  css  js  c++  java
  • Postman系列之Tests断言

    ——————·今天距2021年276·——————

    这是ITester软件测试小栈第104次推文

    在上一篇:Collections集合管理主要介绍了如何新建Collections新建Folder以及运行Collections

    以下,主要介绍如何用Postman的Tests这个模块进行断言,包括Tests断言原理介绍常用断言方法以及Tests断言实例。

    Tests断言介绍

    1

    简介

    一个完整的接口测试,包括:请求>获取响应正文>断言。所谓断言,就是结果和预期对比,如果一致,则用例通过,如果不一致,断言失败,用例执行失败。

    2

    原理

    Postman中的断言通过JavaScript语言编写,在Tests下方给出可以选择的一些断言内容,断言会在请求返回之后显示,并根据断言的PASSFail情况体现在最终测试结果中。

    3

    常用断言方法

    Setting an environment variable  :设置一个环境变量

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

    Setting a nested object as an environment variable 将嵌套对象设置为环境变量

    var array = [1, 2, 3, 4];
    pm.environment.set("array", JSON.stringify(array, null, 2));
     
    var obj = { a: [1, 2, 3, 4], b: { c: 'val' } };
    pm.environment.set("obj", JSON.stringify(obj));
    

    Getting an environment variable 获取环境变量

    pm.environment.get("variable_key");
    

    Getting an environment variable (whose value is a stringified object)  获取一个环境变量,其值是一个字符串化的对象

    // These statements should be wrapped in a try-catch block if the data is coming from an unknown source.
     
    var array = JSON.parse(pm.environment.get("array"));
    var obj = JSON.parse(pm.environment.get("obj"));
    

    Clear an environment variable 清除一个环境变量

    pm.environment.unset("variable_key");
    

    Set a global variable 设置一个全局变量

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

    Get a global variable 获取一个全局变量

    pm.globals.get("variable_key");
    

    Clear a global variable 清除全局变量

    pm.globals.unset("variable_key");
    

    Get a variable 获取一个变量

    pm.variables.get("variable_key");
    

    Check if response body contains a string 检查响应主体是否包含字符串

    pm.test("Body matches string", function () {
        pm.expect(pm.response.text()).to.include("string_you_want_to_search");
    });
    

    Check if response body is equal to a string 检查响应主体是否等于一个字符串

    pm.test("Body is correct", function () {
        pm.response.to.have.body("response_body_string");
    });
    

    Check for a JSON value 检查JSON值

    pm.test("Your test name", function () {
        var jsonData = pm.response.json();
        pm.expect(jsonData.value).to.eql(100);
    });
    

    Content-Type is present 内容类型存在

    pm.test("Content-Type is present", function () {
        pm.response.to.have.header("Content-Type");
    });
    

    Response time is less than 200ms 响应时间小于200ms

    pm.test("Response time is less than 200ms", function () {
        pm.expect(pm.response.responseTime).to.be.below(200);
    });
    

    Status code is 200 状态码是200

    pm.test("Status code is 200", function () {
        pm.response.to.have.status(200);
    });
    

    Code name contains a string 代码名称包含一个字符串

    pm.test("Status code name has string", function () {
        pm.response.to.have.status("Created");
    });
    

    Successful POST request status code 成功的POST请求状态码

    pm.test("Successful POST request", function () {
        pm.expect(pm.response.code).to.be.oneOf([201,202]);
    });
    

    Send an asynchronous request 发送异步请求

    pm.sendRequest("https://postman-echo.com/get", function (err, response) {
        console.log(response.json());
    });
    

    Convert XML body to a JSON object 将XML正文转换为JSON对象

    var jsonObject = xml2Json(responseBody);
    

    Tests断言实例

    1

    环境准备

    接口地址:https://www.v2ex.com/api/nodes/show.json?name=python

    • Method: GET

    • Authentication: None

    2

    场景

    1.状态码等于200;

    2.断言 id=90;

    3.url = "http://www.v2ex.com/go/python";

    3

    示例

    1.在SNIPPETS中,找到"status code:Code is 200",此断言方法即判断HTTP状态码是否为200,点击此断言方法,断言代码自动添加至Tests下。

    2.依次添加其他断言条件,点击Send发送请求。

    断言条件:

    pm.test("Status code is 200", function () {
        //断言状态码是否为200
        pm.response.to.have.status(200);
    });
    
    
    var jsonData = JSON.parse(responseBody);
    
     //断言id是90
    tests["Check respose id value"] = jsonData.id === 90;
     
     //断言url
    tests["Check respose url value"] = jsonData.url === "https://www.v2ex.com/go/python";
    

    如图所示:

    3.查看断言结果,在响应区内可以看TestResults一共有3个断言;如下所示,3个断言全部通过。

    以上


    That‘s all

    更多Postman系列文章

    敬请期待

    ITester软件测试小栈

    往期内容宠幸

    叮—这有一打让你666的测试终极资料包,请查收!

    PyCharm2020年最新永久激活锦囊

    QQ空间面试题放送,速度教科书式扑街补救offer!

    金九银十加薪季,测试题预热一波

    Selenium系列文章汇总

    Fiddler基本使用

    Fiddler抓包介绍

    速看,APP测试之ADB最全指南!

    APP测试之Monkey压力测试(一)

    APP测试之Monkey压力测试(二)

    Python接口自动化-接口基础(一)

    Python接口自动化-接口基础(二)

    Postman系列之安装及简介

    快来星标 置顶 关注

     后台 回复资源取干货

    回复答题挑战玩转答题

    回复2020与我共同成长

    想要获取相关资料软件 ?

    测试交流Q群:727998947

    点亮一下小花花,我就知道你“在看”

  • 相关阅读:
    set
    网络流学习(最小费用最大流)
    网络流学习(最大流)
    模拟退火学习
    NOI Day1T1归程(Kruskal重构树+Dijkstra)
    线性基学习
    高斯消元学习
    manacher算法学习(求最长回文子串长度)
    AC自动机模板2
    AC自动机入门
  • 原文地址:https://www.cnblogs.com/ITester520/p/13203329.html
Copyright © 2011-2022 走看看