Postman:添加断言(二)

 使用Postman进行接口测试时,添加断言十分重要,它是验证我们的接口是否通过测试的衡量标准。断言就是判断响应内容与预期返回是否一致。

    Postman可以在请求模块的Tests标签添加断言,比较方便的是,Postman已经提供了一些代码片段供我们使用。

    下面使用一个接口实例来说下如何处理断言:

       如上图所示,响应body的内容为一个json格式的字符串,这些内容可以作为断言的依据,切换到Tests标签,控制台右侧可以看到备用的代码片段。

1.判断响应内容是否包含某个字符串,点击选择【Response body:Contains string】,左侧出现如下代码

        其中,pm是postman的主要对象,一般通过它来调用函数、数据等;

        Body matches string可以看作这个测试代码段的描述说明,可以自己定义;

        string_you_want_to_search表示预期响应内容,即用来断言的标准输出,需要根据实际情况设置;

        改为如下:

        代表:判断响应body中是否包含字符串“error_message”。如果包含,表示断言结果通过;如果不包含,表示断言结果不通过。

2.判断响应内容是否和预期内容完全一致。

        点击选择【Response body:Is equal to a string】,左侧出现如下代码段

        其中,response_body_string处填写的内容要和接口返回的内容完全一致才可以匹配成功。

        假如响应body内容如下:

        那么需要把所有返回的内容填写到response_body_string处才可以。

        拷贝响应内容时,把Raw标签中的原始返回内容放过去即可,这样避免出现格式问题。

3.判断返回json数据中某个键对应的值

        如果响应内容是json格式的字符串,则可以断言json数据中的某个键值对。

        点击选择【Response body:JSON value check】,左侧出现如下代码段。

        其中,Your test name表示这个测试片段的名称,可以自己任意定义;

        jsonData.value表示响应json串中的某个键,如果响应内容如下:

        所以,jsonData.value可以是json.status或json.desc或json.data。

        eql()填写的预期返回的字符串(把100改为断言内容即可)。

        最终形式如下:

           如果响应内容是嵌套的字典格式,则一层层引用即可,如下:

        如果字典中嵌套了列表,则按照索引引用即可,反正要看清响应内容的格式。

4.判断请求返回的状态码是否为200

        点击选择【Status code:Code is 200】,左侧出现如下代码段。

5.判断响应体中某个返回值的类型

        点击选择【Response body:JSON value check】,然后要把jsonData.value放在一个typeof()函数中,这样就是判断输出值的类型了。

模块 描述 示例
Clear a global variable 清除全局变量 pm.globals.unset("variable_key");
Clear an environment variable 清除一个环境变量 pm.environment.unset("variable_key");
Get a global variable 得到一个全局变量 pm.globals.get("variable_key");
Get a variable 得到一个变量 pm.variables.get("variable_key");
Get an environment variable 得到一个环境变量 pm.environment.get("variable_key");
Response body:contains string 检查response body包含字符串 pm.test("Body matches string", function () { pm.expect(pm.response.text()).to.include("string_you_want_to_search"); });
Response body:convert XML body to a JSON object response body:将XML转换为JSON对象 var jsonObject = xml2Json(responseBody);
Response body:is equal to a string 检查响应体等于一个字符串 pm.test("Body is correct", function () { pm.response.to.have.body("response_body_string"); });
Response body:JSON value check 检查response body中JSON某字段值 pm.test("Your test name", function () { var jsonData = pm.response.json(); pm.expect(jsonData.value).to.eql(100); });
Response headers:content-Type header check 检查content-Type是否包含在header返回 pm.test("Content-Type is present", function () { pm.response.to.have.header("Content-Type"); });
Response time is than 200ms 响应时间超过200ms pm.test("Response time is less than 200ms", function () { pm.expect(pm.response.responseTime).to.be.below(200); });
Send s request 发送一个请求 pm.sendRequest("https://postman-echo.com/get", function (err, response) { console.log(resp onse.json()); });
Set a global variable 设置一个全局变量 pm.globals.set("variable_key", "variable_value");
Set an environment variable 设置一个环境变量 pm.environment.set("variable_key", "variable_value");
status code:Code is 200 状态码:代码是200 pm.test("Status code is 200", function () { pm.response.to.have.status(200); });
status code:Code name has string 状态码:代码中有指定字符串 pm.test("Status code name has string", function () { pm.response.to.have.status("Created"); });
status code:Successful POST request 状态码:成功的post请求 pm.test("Successful POST request", function () { pm.expect(pm.response.code).to.be.oneOf([201,202]); });
use tiny validator for JSON data 为json数据使用tiny验证器 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; });

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章