成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

大廠接口測試都在用的技術-Diff(附源碼)

開發 測試
Diff是Unix系統的一個很重要的工具程序。它用來比較兩個文本文件的差異,是代碼版本管理的基石之一。

[[383812]]

 Diff概念介紹

Diff是Unix系統的一個很重要的工具程序。它用來比較兩個文本文件的差異,是代碼版本管理的基石之一。


接口Diff測試

接口Diff測試,簡單來說就是比對相同接口在不同版本不同環境下面的返回內容是否符合預期。對于日常迭代的接口來說,Diff測試是我們接口基本功能測試的有效補充!當測試的接口響應中包括100+的字段需要校驗時,對字段逐一校驗的傳統方式效率差的問題就會突顯出來了。這種場景我們可以把某一版本(v1)接口的響應作為基準,然后再對比新版本(v2)的響應,通過工具或者編寫代碼直接查看響應的異同,進而快速定位接口響應信息。通過工具比對接口在這里就不重點介紹了,有很多方法,包括:linux系統中的diff命令,windows可使用工具notepad++等等。在這里我重點介紹一下如何通過代碼實現diff操作,我們以python為例。

Difflib

Difflib作為python的標準庫,無需安裝,作用是對比文本之間的差異,而且支持輸出可讀性比較強的HTML文檔。

代碼寫起來也非常簡單,實例如下:

  1. import difflib 
  2. import sys 
  3. #讀文件 
  4. def read_file(filename): 
  5.       try: 
  6.            with open(filename, 'r'as f: 
  7.            return f.readlines() 
  8.       except IOError: 
  9.            print("ERROR: 沒有找到文件:%s或讀取文件失敗!"% filename) 
  10.            sys.exit(1) 
  11. def compare_file(file1, file2, out_file): 
  12.     file1_content = read_file(file1) 
  13.     file2_content = read_file(file2) 
  14.     d = difflib.HtmlDiff() #以html方式比較 
  15.     result = d.make_file(file1_content,file2_content) #生成html文本 
  16. with open(out_file, 'w'as f: #把html文本寫入html文件 
  17.         f.writelines(result) 
  18. if __name__ == '__main__'
  19.     compare_file(r'D:\logs\log1.log', r'D:\logs\log2.log',r'D:\logs\result.html'

 打開html報告,我們可以清楚地看到兩個文檔中的差別,顯示如下:


其中左邊是文件log1.log,右邊是log2.log

紅色表示log1.log的內容被刪除了

綠色表示log2.log新增的內容

黃色表示log1.log和log2.log中發生變化的內容

Difflib改進

上面的例子是從兩個文件中讀取數據,然后進行的比較,代碼如下:

  1. file1_content =read_file(file1) 
  2.  
  3. file2_content = read_file(file2) 

 那么在真實測試時,我們需要的是接口響應的比對,怎么做呢?也很容易,我們只需要把read_file換成,發送接口請求(使用requests模塊)并獲取響應即可。

  1. response1=requests.get(req) 
  2.  
  3. response2=requests.get(req) 

 在這里仍然有一個問題,我們做接口測試時,是一個請求一個請求校驗的,當多個請求批量校驗時,我們是否有必要每做一個請求就生成一個比對錯誤的html報告呢?顯然是不需要的,理想情況是,當兩個請求響應出現錯誤的時候生成錯誤報告!那么接下來需要思考的是怎么樣判斷html報告中是否有錯誤出現呢?在這里我介紹一個比較簡單的方法,在diff生成的html報告,我們通過報告中的顏色標識來判斷(紅色、綠色和紅色)diff結果,如下圖:


查看一下生成的html文件源碼,發現文件底部帶顏色的Add、Changed和Deleted 對應的腳本是


在html文件中搜索關鍵字class="diff_sub",發現:

2018,對應


可見,發現一處文字刪除就會出現一個,因此我們可以通過如下代碼實現

  1. if result.count('<span class="diff_sub">') >0 or result.count('<span class="diff_chg">')>0 or result.count('<span class="diff_add">')>0: 
  2.     print ("find diff"
  3.     with open(out_file, 'w', encoding='utf-8'as f: 
  4.            f.writelines(result) 
  5. else
  6.       print("not find diff, no html report generate!"

 好了,這就是通過difflib進行接口比對操作的實現原理。

 

責任編輯:姜華 來源: 今日頭條
相關推薦

2023-09-04 13:55:44

分支masterhotfix

2021-02-17 21:04:03

Ehcache緩存Java

2021-12-15 06:58:28

RedisEhCache緩存

2022-07-11 08:33:51

容器技術Docker

2020-10-13 21:23:52

數據

2024-10-21 08:01:49

私服倉庫Maven

2023-03-01 13:54:46

技術AI

2024-08-12 11:42:21

2021-05-17 10:44:24

Python 工具編程語言

2015-11-13 10:38:53

Github系統內部開源軟件

2024-03-26 09:42:27

分片算法應用

2023-02-14 06:40:33

React HookReact

2013-06-13 08:57:47

Web開發Web工具Web訪談

2022-06-14 08:59:19

PythonerpdfkitPython

2023-09-14 10:48:58

2020-10-11 08:16:09

cURLAPI端點開發工具

2021-01-26 00:32:59

chrome插件瀏覽器

2023-12-09 09:44:07

MetaFacebook開源

2024-10-11 16:34:22

2017-10-23 12:54:53

PPT
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 成人免费在线电影 | 日韩毛片在线观看 | 2020国产在线 | 日韩色在线 | 久久久69 | 久久久久久高潮国产精品视 | 香蕉视频一区二区 | 97成人免费| 欧美一区二区三区在线播放 | 欧美一区二区在线播放 | 天天操精品视频 | 玖玖国产 | 久久国产激情视频 | 九九在线视频 | 天天色天天色 | 欧美一区二区久久 | www.免费看片.com | 日韩中文字幕在线播放 | 91大片| 国产成人精品网站 | 91大神xh98xh系列全部 | 国产一区二区成人 | 一区二区三区免费 | 久久精品中文字幕 | 正在播放国产精品 | 91国在线视频 | 日韩超碰| 国产精品久久久久久久岛一牛影视 | 欧美一卡二卡在线 | 一区二区三区影院 | 青青草一区 | 女女爱爱视频 | 国产目拍亚洲精品99久久精品 | 久久精品中文字幕 | 夜夜爽99久久国产综合精品女不卡 | 久久久久一区二区三区 | 成人欧美一区二区三区 | 欧美一区二区激情三区 | www久久99| 天天干夜夜操视频 | 亚洲精品久久久一区二区三区 |