1. 程式人生 > >postman tests例項記錄,常用測試結果驗證及使用技巧

postman tests例項記錄,常用測試結果驗證及使用技巧

Postman的test本質上是JavaScript程式碼,通過我們編寫測試程式碼,每一個tests返回True,或是False。
每一個tests實際上就是一個測試用例

官方文件給出了很多驗證方式,我們通過例項來進行學習

介面返回結果為json

{
  "status": 301,
  "message": "購買商品庫存不足",
  "lists": [11]
}

1.檢查response的body中是否包含字串

tests["測試點"] = responseBody.has("需要查詢的字串");
例:
tests["status code"] = responseBody.has
("301"); tests["status是否存在"] = responseBody.has("status"); tests["lists是否存在"] = responseBody.has("lists"); tests["lists值為11"] = responseBody.has("11");

注:當json中value為integer時,需要查詢的值可以不帶雙引號,
tests[“xxx”]xxx代表的是你測試點的名字,可以是中文
tests[“xxx”]xxx在一個指令碼中如果出現多次,那麼只執行第一個,所以儘量不要重複
當value等於中文字串時,無法驗證

2.檢查Response Body是否等於字串


tests[“測試點”] = responseBody === “Response Body返回的內容”;
這個可以用在介面返回內容為純字串時,直接檢查整個返回結果的正確性,
例子:

介面返回:哈哈
tests["返回為哈哈"] = responseBody === "哈哈";
tests["返回為哈哈"] = responseBody === "哈";
第二個會返回False,必須完全匹配

3.檢查相應時間

tests["Response time 小於200毫秒"] = responseTime > 200;
tests["Response time 大於200毫秒"] = responseTime < 200
;

4.檢查狀態碼
這個也好理解,就是http請求狀態碼

tests["Status code is 200"] = responseCode.code === 200;

注:
這裡的狀態碼,跟上面我們用的json裡邊的”status”不是一回事

5.Code name contains a string

tests["Status code name has string"] = responseCode.name.has("Created");
tests["502"] = responseCode.name.has("Server");
tests["502"] = responseCode.name.has("Unreachable Server");

檢查HTTP code 對應的string,如下面給出的list
如下對應表,如果使用fiddler模擬相應的返回,注意fiddler返回的大小寫有問題,用下表的string
1 訊息(1字頭)
▪ 100 Continue
2 成功(2字頭)
▪ 200 OK
3 重定向(3字頭)
▪ 300 Multiple Choices
▪ 301 Moved Permanently
▪ 302 Move temporarily
…..
▪ 500 Internal Server Error
▪ 501 Not Implemented
▪ 502 Bad Gateway
▪ 503 Service Unavailable
▪ 600 Unparseable Response Headers(省略了一些)

6.設定環境變數/全域性變數

postman.setEnvironmentVariable("key", "value");
postman.setGlobalVariable("key", "value");

7.把XML的body轉換成JSON物件

var jsonObject = xml2Json(responseBody);

8.檢查json的值

var jsonData = JSON.parse(responseBody);tests["Your test name"] = jsonData.value === 100;
還拿上面的json資料做測試
tests["狀態碼為301"] = jsonData["status"] == "301";
tests["message"] = jsonData["message"] == "購買商品庫存不足";
tests["list"] = jsonData["lists"][0] == "11";

9.檢查有資訊

tests["Content-Type is present"] = postman.getResponseHeader("content-Type");//不區分大小寫
tests["Content-Type is present"] = responseHeaders.hasOwnProperty("Content-Type");//區分大小寫

10.POST request狀態碼

tests["Successful POST request"] = responseCode.code === 201 || responseCode.code === 202;

201 - Created 伺服器已經建立了文件,Location頭給出了它的URL。
202 - Accepted 已經接受請求,但處理尚未完成。

官方文件中還給出了對於json的驗證例子
這種基於JSON格式定義JSON資料結構的規範,我們叫他JSON Schema

官方例子

var schema = { "items": { "type": "boolean" }};
var data1 = [true, false];
var data2 = [true, 123];
console.log(tv4.error);
tests["Valid Data1"] = tv4.validate(data1, schema);
tests["Valid Data2"] = tv4.validate(data2, schema);

data1和data2是測試資料,schema相當於驗證json的規範
示例中驗證data1和data2中的value是否都是boolean型別

先了解下書寫json規範文件常用的關鍵字

關鍵字 描述

$schema 關鍵字狀態,表示這個模式與 v4 規範草案書寫一致。
title   用它給我們的模式提供了標題。
description 關於模式的描述。
type    type 關鍵字在我們的 JSON 資料上定義了第一個約束:必須是一個 JSON 物件。
properties  定義各種鍵和他們的值型別,以及用於 JSON 檔案中的最小值和最大值。
required    存放必要屬性列表。
minimum 給值設定的約束條件,表示可以接受的最小值。
exclusiveMinimum    如果存在 "exclusiveMinimum" 並且具有布林值 true,如果它嚴格意義上大於 "minimum" 的值則例項有效。
maximum 給值設定的約束條件,表示可以接受的最大值。
exclusiveMaximum    如果存在 "exclusiveMinimum" 並且具有布林值 true,如果它嚴格意義上小於 "maximum" 的值則例項有效。
multipleOf  如果通過這個關鍵字的值分割例項的結果是一個數字則表示緊靠 "multipleOf" 的數字例項是有效的。
maxLength   字串例項字元的最大長度數值。
minLength   字串例項字元的最小長度數值。
pattern 如果正則表示式匹配例項成功則字串例項被認為是有效的。

還拿第一個json做例子

{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "id": "",
    "properties": {
        "lists": {
            "id": "",
            "items": {
                "default": 11,
                "description": "檢查list值",
                "id": "",
                "title": "",
                "type": "integer"
            },
            "type": "array"
        },
        "message": {
            "default": "購買商品庫存不足",
            "description": "message資訊",
            "id": "",
            "title": "",
            "type": "string"
        },
        "status": {
            "default": 301,
            "description": "返回狀態值",
            "id": "",
            "title": "",
            "type": "integer"
        }
    },
    "type": "object"
}

一個完整的JSON Schema驗證規範
可以根據實際情況刪除一些key,但是紅色標記的要保留
default預設值,根據實際情況書寫,上面例子“商品庫存不足時”的狀態碼為301,如果要對status和message的值進行驗證,那麼default就可以加上,如果只是驗證返回的value是integer或是string型別,可以忽略
還可以加入最大值最小值等限制

下面是測試程式碼

var jsonData = JSON.parse(responseBody);

var schema = {
  "properties": {
    "lists": {
      "items": {
        "default": 11,
        "description": "庫存不足的商品id",
        "type": "integer"
      },
      "type": "array"
    },
    "message": {
      "default": "購買商品庫存不足",
      "description": "id為11的商品庫存不足",
      "type": "string"
    },
    "status": {
      "description": "status",
      "type": "integer"
    }
  },
  "type": "object"
};

tests["json格式驗證"] = tv4.validate(jsonData, schema); //驗證json格式
tests["返回狀態碼是200"] = responseCode.code === 200;
tests["狀態碼為301"] = jsonData["status"] == "301";
tests["message"] = jsonData["message"] == "購買商品庫存不足";
tests["list"] = jsonData["lists"][0] == "11";

這樣介面返回的json結構和資料我們就可以驗證了。

tv4為Postman引入的外部庫,想了解的可以去看官方文件
另外Postman還提供了一些方法如:

responseCookies
request.data["key"]=="value"
request.headers["key"]=="value"
request.method
request.url
request
responseHeaders
responseBody 
responseTime 
responseCode 包含code,name,detail
iteration 

這些方法可以幫助我們做更多的事情,比如通過一個介面拿到cookie值,然後把cookie設定成全域性變數,提供給其他介面使用

當我們寫測試指令碼時,可能會遇到指令碼書寫錯誤或是需要一些log來輔助我們完善指令碼,
我們可以開啟 View->Show Postman Console,開啟後我們可以通過console.log(xxx)來輸出日誌和檢視錯誤資訊

通過上面這些知識,我們可以解決大多數的問題,如果想更進一步,需一定的js基礎

相關推薦

轉載postman tests例項記錄,常用測試結果驗證使用技巧

postman tests例項記錄,常用測試結果驗證及使用技巧 2018年07月30日 14:50:23 nikita1995 閱讀數:1003 標籤: postman 更多 個人分類: 軟體測試 Postman的test本質上

postman tests例項記錄,常用測試結果驗證使用技巧

Postman的test本質上是JavaScript程式碼,通過我們編寫測試程式碼,每一個tests返回True,或是False。 每一個tests實際上就是一個測試用例 官方文件給出了很多驗證方式,我們通過例項來進行學習 介面返回結果為json {

Postman 常用測試結果驗證使用技巧

Postman的test本質上是JavaScript程式碼,通過我們編寫測試程式碼,每一個tests返回True,或是False。每一個tests實際上就是一個測試用例 官方文件給出了很多驗證方式,我們通過例項來進行學習 介面返回結果為json{ "status": 301, "message": "購買

IntelliJ IDEA 常用快捷鍵列表技巧大全

打開 作者 附件 繼承關系 vcs 成就 enable 活動 是的 IntelliJ Idea 常用快捷鍵列表 Alt+回車 導入包,自動修正 Ctrl+N 查找類 Ctrl+Shift+N 查找文件 Ctrl+Alt+L 格式化代碼 Ctrl+Alt+O 優化

Postman-Tests模塊測試方法記錄

ase ade 試用 seh parameter request assume arc 腳本 用Postman的時候大多數測試結果是可以用Tests模塊的測試方法來代替人工檢查的,測試方法本質上是JavaScript代碼,我們可以通過運行測試用例(測試腳本是在發送請求之後並

web常用測試記錄

輸入框 1、字元型輸入框: 單行文字輸入框:英文全形、英文半形、數字、空或者空格、特殊字元“~!@#¥%……&*?[]{}”,特別要注意單引號和&符號。如果禁止直接輸入特殊字元時,使用“貼上、拷貝”功能嘗試輸入。 長度檢查:最小長度、最大長度、最小長度-1、最大長度+1、輸

常用表單驗證例項

1. 長度限制<script>function test(){if(document.a.b.value.length>50){alert("不能超過50個字元!");document.a.b.focus();return false;}}</script><fo

mysql關於資料庫事務隔離級別測試(包含例項測試語句,測試結果對比)

1、知識點; 事務的四大特性 ACID ;  原子性(Atomic):事務是一個整體(無論在該事務中操作任何CRUD),要不全部執行,要不全部不執行。(資料庫能夠進行操作的最小的邏輯單元) 一致性(Consistent):組成一個事務的操作是CRUD,要麼全部成功,要

lmbench3 lat_mem_rd的測試結果記錄

預設情況下,L1 cache/L2cache都開啟: / # lat_mem_rd 128M "stride=128 0.00049 4.019 0.00098 4.019 0.00195 4.019 0.00293 4.019 0.00391 4.019 0.00586

postman如何繞過登入賬戶和密碼驗證,進行介面測試的方法

實測於:2019.01.08 參考原文:https://yq.aliyun.com/ziliao/403942 一、獲取登入後的cookie資料 1.開啟瀏覽器; 2.啟用開發者模式(F12鍵); 3.在開發者模式下執行:先開啟network,再點選all; 4.再回到使用者介面執行常規的登入

Jenkins+Ant+Android+Robitium 例項詳解(打包app,執行Robotium測試,生成測試結果

Jenkins Ant 打包android app,構建Robotium測試,執行Robotium測試,生成測試結果 例項詳解 前言:       眾所周知,Jenkins提供了強大持續整合功能,本文主要是使用Jenkins 整合Ant構建、打包Android工程,並執行基

壓力測試三(Jmeter的簡單測試常用檢視結果引數介紹)

(1)儲存方案 (2)建立執行緒組   執行緒組用來模擬使用者的併發訪問   執行緒組主要包含三個引數:執行緒數、準備時長(Ramp-Up Period(in seconds))、迴圈次數

求大神解決,已困擾兩天,python,unittest測試結果為Ran 0 tests in 0.000s

testadd_run.py #coding=utf-8 import unittest from match_ import Match class Test_match(unittest.TestCase): def setUp(self):

postman進行http接口測試

軟件測試 2個 來講 多語言 == name 類庫 gen 全局 轉載地址: http://blog.csdn.net/five3/article/details/53021084 HTTP的接口測試工具有很多,可以進行http請求的方式也有很多,但是可以直接拿來就用,

Emulated單ROS測試結果

nbsp ted image 得到 node 基本 兩個 帶寬 log Emulated ROS在本地產生數據,單個ROS, 2個 RequestHandler. 改變因素:通道數,SFI個數, 數據包大小 ROS布置在cmm03node03上,每個SFI單獨布置在一個節

(轉)LR性能測試結果樣例分析

驗證 action 禁止 可選 指示器 mysq jsp 大並發 人工 測試結果分析   LoadRunner性能測試結果分析是個復雜的過程,通常可以從結果摘要、並發數、平均事務響應時間、每秒點擊數、業務成功率、系統資源、網頁細分圖、Web服務器資源、數據庫服務器資源等

jmeter3.0生成html格式的dashboard性能測試結果

comm src gen ever sta lte tolerance for rect jmeter3.0以上支持生成dashboard的html報告,官網介紹:https://jmeter.apache.org/usermanual/generating-dashboa

如何將測試結果在jenkins上發布

如何 -name uil pip 成對 log clas lan itl 運行完cucumber測試後,會生成html格式的結果文件,如何能在jenkins上訪問這個文件?需要安裝一個“HTML Publisher plugin”的插件,同時做一些配置。 在jenkins上

w3cschool中jQuery測試結果總結

onf 元素 選擇 () int head jquer ict tro 1.jQuery 是 W3C 標準. 2.$("div#intro .head") 選擇器選取:class="intro" 的任何 div 元素中的首個 id="head" 的元素. 3.用於處理命名沖

Apache ab性能測試結果分析

wait 指定 path name 平均值 connect con ssi ans Apache ab性能測試結果分析   測試場景:模擬10個用戶,對某頁發起總共100次請求。   測試命令: ab -n 100 -c 10 地址   測試報告:     Server