1. 程式人生 > >Fiddler外掛---將Mapi請求自動轉為HTTPRunner測試用例(YAML格式)

Fiddler外掛---將Mapi請求自動轉為HTTPRunner測試用例(YAML格式)

背景

  繼之前鼓搗出了Mapi解密外掛之後,在團隊內已經使用了三年之久,一躍成為團隊最愛歡迎的測試工具之一(加個之一,低調謙虛一點)。

  隨著團隊推行HttpRunner搞介面自動化;編寫和維護Case帶來的工作量成為同學們最頭疼的事情;木有之一。HTTPRunner要求Case格式是YAML的;而我們的引數都是JSON的;每次編寫新Case都要在二者中不斷的轉換,折騰的欲仙欲死。看著兄弟們日益低落的狀態;我慢慢意識到,是時候再做點什麼改進了。

  這時候新來的同事小青提出建議----能不能把Mapi請求導致為HAR檔案,然後通過HTTPRunner的 har2case命令轉成Case;這樣不是快多了嗎?

  小夥子有想法啊,不愧是我招進來的人!

  可既然最終目的是要轉成YAML格式的Case;我為什麼不直接轉成Case?脫褲子放X先轉成Har的事,咱可不幹!

  開啟塵封已久的C#工程;看了下git記錄,上一次的提交還是一年多以前;稍微理了理思路,然後開啟瀏覽器並飛速敲下了 google.com.hk;什麼,為啥不是baidu ? 明叔給你一個白眼並向你扔了一個二踢腳。

上集回顧:

 【FiddlerScript高階技巧---自定義Fiddler選單】

上上集 。。。

 【Fiddler外掛 --- 解密Elong Mapi請求引數及響應內容】

一、先看效果

二、實現原理

1、原始的Mapi請求;需要經過一次unzip處理,再進行一次AES解密,才能轉換為明文的JSON;如下圖 (其中 "api" 這個欄位,是在Fiddler中處理後加上去的;為了方便在轉化為YAML Case時,自動新增URL; )

2、用Python + Flask 實現介面 http://ip:port/ConvertToYAML ; 用於實現JSON到YAML TestCase 的轉換

    智慧替換;
      通過轉換後的結果圖也可以看出;Flask介面在接收到請求後作默默地做了很多工作
      1)實現了自動配置Config;自動繫結變數;自動登入並獲取Token;
      2) 在TestCase的Header裡自動完成變數替換;如 deviceid version sessionToken等,
      3)入參中若有日期相關的引數;也會自動替換為動態方法,動態獲取日期值。
      4)自動新增Hook函式;用於識別和處理Mapi請求

3、在Fiddler中將JSON入參和Header直接Post到上述介面中;並獲取轉換後的結果;

用介面處理轉換,而不是在Fiddler外掛中實現,是因為考慮到維護的靈活性;如何對用例的編寫規範、模板等有變更 ,直接修改介面就好;不用每次發新的外掛包來更新Fiddler客戶端。

三、使用方法

 更新外掛後,直接在檢視入參的文字框中右鍵 ---【轉換為YAML】即可;然後可以一鍵儲存到自動化工程目錄下稍作修改就可以提交git了
 需要進一步處理的地方如下(把大象裝進冰箱分幾步?):

    1、修改用例作者 (author 欄位值)
    2、修改CaseName ; 
    3、新增需要的斷言

PS: 相比之前手擼Case程式碼,是不是快了不少