導航:首頁 > 編程語言 > python介面測試用例

python介面測試用例

發布時間:2024-12-01 09:10:06

⑴ 用 python 為介面測試自動生成用例

基於屬性的測試 會產生大量的、隨機的參數,特別適合為單元測試和介面測試生成測試用例

盡管早在2006年haskell語言就有了 QuickCheck 來進行」基於屬性的測試「,但是目前來看這依然是一個比較小眾的領域,參考資料有限,本文如有不足,歡迎指正。

在過去的測試實踐中,執行測試時通常需要明確的內容(Value):

這些內容可以通過」判定樹「或者」判斷表「來表示,然後測試的執行過程變成了這樣

可以稱為 基於表的測試

在最初,這給了我們測試的方向,但是缺點也非常明顯:

你要足夠多的"X->Y" 才能可能覆蓋到隱蔽的bug。

這里請大家回答幾個問題:

如果以上問題的答案不是yes,那麼 基於屬性的測試 就是你需要掌握的東西!

基於屬性的測試和基於表的測試,最大的區別可以這樣描述:

vs

於是利用工具生成大量的X類數據,進行測試,並驗證結果是否Y類。

值得注意的是:

在不同的語言中有不同的工具來實現,比如:

本文以python為例進行演示:

假設有add函數,接收兩個類型整數參數,並返回它們的相加結果

首先寫出一個簡單的測試用例

正如前面所說,一個這樣的用例,根本沒信心覆蓋全部的場景,例如:

所以接下來怎麼辦?

改為基於屬性的測試

執行結果

由結果可知,工具根據 參數是整數 這一規范,自動生成、執行了大量的測試用例

介面測試和函數的單元測試非常相似:

此外介面文檔作為前後端、甚至測試開發的對接窗口,對參數的要求約定的更加細致,

以OpenAPI為例,每個參數可以有以下屬性:

於是為介面生成符合要求的參數就變得可行了,舉個例子:

這是以unittest為例進行封裝的結果,只需要在TestCase中指定openapi的內容(或路徑),

啟動測試框架時,會自動讀取、解析介面文檔,並生成測試用例

下面是部分執行日誌,可以看到對介面發送了隨機參數,並獲得返回值

文章來自https://www.cnblogs.com/dongfangtianyu/p/api_test_by_pbt.html

⑵ 【Python介面測試-1】登錄介面獲取token和uuid

所有介面測試都離不開登錄介面獲取的用戶信息,無論是使用JMeter、APIPost還是Python,登錄介面的調試都是首要步驟。在學習Python和unittest時,從項目開始,邊實踐邊探索,這里推薦菜鳥教程作為入門資源。

之前關於JMeter和ApiPost的文章里,同樣調試了登錄介面。登錄介面的參數和返回數據可以通過Fiddler抓包查看。登錄介面返回的json數據包含uuid和token,這兩個信息作為用戶認證數據,需要在所有介面測試中的header中引用。為此,編寫代碼提取uuid和token,並將其拼接到header中。

在編碼過程中,將環境信息、常用用戶信息等存儲為常量,便於在編碼時直接引用。創建了settings文件夾以存放這些常量。編寫unittest測試類(testman.py)來調用介面和公共方法。實現登錄介面調試和獲取uuid、token的過程,封裝在common模塊的get_header.py文件中。

具體步驟包括定義login_url、設置header和data參數,並調用post方法。login_url引用settings文件中的環境信息。在headers參數中添加固定的頭部信息,如Referer,否則可能導致請求失敗。data參數以字典形式包含用戶信息,考慮到不同項目登錄參數的差異,進行了適當的if判斷。通過res_data接收調用post方法返回的數據,但由於數據格式為字元串,直接使用json()方法獲取token信息不適用,需要先將字元串轉換為字典格式。

轉換字元串為字典推薦使用ast.literal_eval()方法,確保安全且高效。獲取到轉換後的數據後,將uuid和token追加到header中。之後,使用這個包含uuid和token信息的header調用後續的業務介面。

以上步驟涵蓋了從登錄介面調試到獲取uuid和token,以及如何將這些信息應用在其他介面測試中的全過程。有興趣了解更多細節,歡迎訪問相關文章。

⑶ 使用python做介面自動化測試容易嗎

為什么要做介面自動化測試?
在當前互聯網產品迭代頻繁的背景下,回歸測試的時間越來越少,很難在每個迭代都對所有功能做完整回歸。但介面自動化測試因其實現簡單、維護成本低,容易提高覆蓋率等特點,越來越受重視。
為什么要自己寫框架呢?
使用Postman調試通過過直接可以獲取介面測試的基本代碼,結合使用requets + unittest很容易實現介面自動化測試的封裝,而且requests的api已經非常人性化,非常簡單,但通過封裝以後(特別是針對公司內特定介面),可以進一步提高腳本編寫效率。
一個現有的簡單介面例子
下面使用requests + unittest測試一個查詢介面
介面信息如下
請求信息:
Method:POST
URL:api/match/image/getjson
Request:
{
"category": "image",
"offset": "0",
"limit": "30",
"sourceId": "0",
"metaTitle": "",
"metaId": "0",
"classify": "unclassify",
"startTime": "",
"endTime": "",
"createStart": "",
"createEnd": "",
"sourceType": "",
"isTracking": "true",
"metaGroup": "",
"companyId": "0",
"lastDays": "1",
"author": ""
}

Response示例:
{
"timestamp" : xxx,
"errorMsg" : "",
"data" : {
"config" : xxx
}

Postman測試方法見截圖:

測試思路
1.獲取Postman原始腳本
2.使用requests庫模擬發送HTTP請求**
3.對原始腳本進行基礎改造**
4.使用python標准庫里unittest寫測試case**
原始腳本實現
未優化
該代碼只是簡單的一次調用,而且返回的結果太多,很多返回信息暫時沒用,示例代碼如下
import requests

url = "http://cpright.xinhua-news.cn/api/match/image/getjson"

querystring = {"category":"image","offset":"0","limit":"30","sourceId":"0","metaTitle":"","metaId":"0","classify":"unclassify","startTime":"","endTime":"","createStart":"","createEnd":"","sourceType":"","isTracking":"true","metaGroup":"","companyId":"0","lastDays":"1","author":""}

headers = { 'cache-control': "no-cache", 'postman-token': "e97a99b0-424b-b2a5-7602-22cd50223c15"
}

response = requests.request("POST", url, headers=headers, params=querystring)

print(response.text)

優化 第一版
調整代碼結構,輸出結果Json出來,獲取需要驗證的response.status_code,以及獲取結果校驗需要用到的results['total']
#!/usr/bin/env python#coding: utf-8'''
unittest merchant backgroud interface
@author: zhang_jin
@version: 1.0
@see:http://www.python-requests.org/en/master/
'''import unittestimport jsonimport tracebackimport requests

url = "http://cpright.xinhua-news.cn/api/match/image/getjson"

querystring = { "category": "image", "offset": "0", "limit": "30", "sourceId": "0", "metaTitle": "", "metaId": "0", "classify": "unclassify", "startTime": "", "endTime": "", "createStart": "", "createEnd": "", "sourceType": "", "isTracking": "true", "metaGroup": "", "companyId": "0", "lastDays": "1", "author": ""
}

headers = { 'cache-control': "no-cache", 'postman-token': "e97a99b0-424b-b2a5-7602-22cd50223c15"
}#Post介面調用
response = requests.request("POST", url, headers=headers, params=querystring)#對返回結果進行轉義成json串
results = json.loads(response.text)#獲取http請求的status_codeprint "Http code:",response.status_code#獲取結果中的total的值print results['total']#print(response.text)

優化 第二版
介面調用異常處理,增加try,except處理,對於返回response.status_code,返回200進行結果比對,不是200數據異常信息。
#!/usr/bin/env python#coding: utf-8'''
unittest merchant backgroud interface
@author: zhang_jin
@version: 1.0
@see:http://www.python-requests.org/en/master/
'''import jsonimport tracebackimport requests

url = "http://cpright.xinhua-news.cn/api/match/image/getjson"

querystring = { "category": "image", "offset": "0", "limit": "30", "sourceId": "0", "metaTitle": "", "metaId": "0", "classify": "unclassify", "startTime": "", "endTime": "", "createStart": "", "createEnd": "", "sourceType": "", "isTracking": "true", "metaGroup": "", "companyId": "0", "lastDays": "1", "author": ""
}

headers = { 'cache-control': "no-cache", 'postman-token': "e97a99b0-424b-b2a5-7602-22cd50223c15"
}try: #Post介面調用
response = requests.request("POST", url, headers=headers, params=querystring) #對http返回值進行判斷,對於200做基本校驗 if response.status_code == 200:
results = json.loads(response.text) if results['total'] == 191: print "Success" else: print "Fail" print results['total'] else: #對於http返回非200的code,輸出相應的code raise Exception("http error info:%s" %response.status_code)except:
traceback.print_exc()

⑷ 如何通過python寫介面自動化腳本對一個需要調用第三方支付

編寫介面自動化腳本以測試涉及第三方支付的報名流程,主要步驟如下:

第一步:設置測試環境與依賴庫

確保Python環境安裝了必要的庫,如requests用於發送HTTP請求,unittest或pytest作為測試框架。

第二步:編寫測試腳本

使用requests和unittest編寫腳本,示例如下,用於測試包含第三方支付的報名流程:

第三步:處理第三方支付

在腳本中,需處理支付請求,包括發起支付、獲取支付結果等。

第四步:運行測試

使用unittest或pytest執行測試腳本,確保所有測試案例均通過。

請注意,此示例提供基礎框架,具體實現會依據API設計和第三方支付網關要求有所不同。

閱讀全文

與python介面測試用例相關的資料

熱點內容
編譯原理一氣呵成 瀏覽:457
北京程序員薪水 瀏覽:292
快遞櫃加密手機號碼怎麼取 瀏覽:433
android新建線程 瀏覽:936
快遞喜歡使用加密號碼 瀏覽:311
虛擬機和編譯軟體 瀏覽:666
遺傳演算法的約束怎麼添加 瀏覽:201
運行jsp後無法為jsp編譯類 瀏覽:117
單片機wifi控制電燈開關 瀏覽:86
linuxpasswd命令 瀏覽:222
單片機並口通訊 瀏覽:772
不朽傳說安卓怎麼下載 瀏覽:598
循環隊列的演算法描述 瀏覽:392
pdf添加空白頁 瀏覽:678
iospng壓縮 瀏覽:73
python代碼寫手 瀏覽:896
word文檔怎樣變為PDF 瀏覽:241
強迫症解壓好物排行榜 瀏覽:724
python中的academy 瀏覽:514
androideval 瀏覽:655