關於Postman+xmysql+nodeJs的實踐分享

Postman是一款接口測試工具,相對Jmeter接口扁平簡潔,很方便開發調試接口使用,若是想要用來作測試,實現批量接口管理,單個接口斷言,以及特殊字符處理,甚至批量回歸測試,生成報表,結合jenkins實現CI集成都是能夠作到的。javascript

1. 環境變量,全局變量

    - 全局變量

        全局變量可用於postman 全部接口,設置方式以下圖,其中Initial value是一個初始值處處是可用於分享於他人,current Value是至當前工程所使用的valuehtml

 


 

    -環境變量

        環境變量可添加多個,構建接口時可選擇其中一個環境變量設置,以下圖,可添加多組不一樣環境變量信息用於不一樣環境下的測試,也可直接導入同事導出的環境變量json文件java

 


 

2. 添加接口

postman對單個接口的支持至關豐富,能夠按需選擇,結構比較扁平化,基本測試一個接口所需的東西在一個頁面均可以找到node


 

填入參數時Bulk Edit比較方便,特別是有多組值的時候先點擊Bulk Edit,貼入多組key:value值而後點擊key-value edit可自動轉換成表格格式。python

3. 前置腳本-Pre-request Script

在作批量回歸測試的時候,有不少接口是須要相似於隨機字符串/隨機數字 或者時間戳等參數的,這種狀況咱們能夠經過腳原本實現。Pre-request Script支持JS,以下腳本實現隨機字符與特定格式時間戳並賦給環境變量:mysql

 

pm.environment.set("randomname","測試計劃"+Math.random());

pm.environment.set("today", getNowFormatDate());

function getNowFormatDate() {

        var date = new Date();

        var seperator1 = "-";

        var year = date.getFullYear();

        var month = date.getMonth() + 1;

        var strDate = date.getDate();

        if (month >= 1 && month <= 9) {

            month = "0" + month;

        }

        if (strDate >= 0 && strDate <= 9) {

            strDate = "0" + strDate;

        }

        var currentdate = year + seperator1 + month + seperator1 + strDate;

        return currentdate;

    }

 

上面pre-request腳本設置了兩個環境變量,使用的時候用兩層大括號括起來就行了,以下圖:sql

 


 

4. 測試腳本-Test

測試腳本可用於設計接口測試斷言,能夠分析response內容或者判斷請求結果及狀態等。右邊提用了不少snippets可供參考使用,支持JS語言,也能夠本身寫一些輔助腳原本使用數據庫

 


 

5.導入導出

postman支持環境變量,全局變量及接口組合(Collection)的到如何導出,Collection右側的小箭頭點進去能夠看到share/run以及export相關的功能,導入及導出的格式爲json,能夠放在相應的工程裏方便管理與分享npm

6.newman,報表

肯定機器上安裝了NodeJs,而後經過npm安裝newman:json

npm install newman -g

安裝newman以後可經過命令行直接跑collection:

newman run mycollection.json

帶上導出的環境變量文件跑10遍:

newman run mycollection.json -e myenv.json -n 10

生成固定格式的報表(下面的命令會生成json,html,junit不一樣格式的報表):

newman run mycollection.json -e myenv.json --reporterscli,json,html,junit

7. xmysql

有很多接口測試須要結合數據庫驗證,jmeter有提供專門的jdbc鏈接模塊,postman卻沒有,但也不是徹底不可作。對於mysql數據庫有一個One command to generate REST APIs for any MySql Database的小工具xmysql很是的神奇好用:

安裝:npm install xmysql -g

使用:xmysql -h localhost -u mysqlUser -p mysqlPassword -d databaseName

而後打開:http://localhost:3000就能夠看到上面數據庫相關的一堆json,找到你要查選的對應表,而後在postman中起一個get請求便可查詢該表全部數據,能夠在Test中添加相應的解析腳本判斷查出的結果中是否包含指望的數據:

 


 

8.關於添加cookie

newman做爲一個nodejs module能夠很方便的放入到一個js工程中,例如我測試的產品,cookie構造的方式很複雜,只能經過模擬登錄的方式獲取,如是我經過python寫了一個簡單的腳本經過頁面模擬登錄獲取cookie而後存入到導出的postman 環境變量json文件中,在經過newman js腳原本跑collection中的case,貼出newman js 部分腳本以下(生成html,junit格式報表用於跟jenkins集成)

var newman = require("newman");

newman.run({

    collection: require('./testAdvance.postman_collection.json'),

    environment:require('./TestFeatured.postman_environment.json'),

    reporters:['cli','html','junit']

}).on('start', function (err, args) { // on start of run, log to console

    console.log('running a collection...');

}).on('done', function (err, summary) {

    if (err || summary.error) {

        console.error('collection run encountered an error.');

    }

    else {

        console.log('collection run completed.');

    }

},process.exit);
相關文章
相關標籤/搜索