Python接口自動化?之用例讀取方法總結
前言:
在軟件測試中,為項目編寫接口自動化用例已成為測試人員常駐的測試工作。本文以python為例,基于筆者曾使用過的三種用例數(shù)據(jù)讀取方法:xlrd、pandas、yaml,下面簡要地介紹下它們的使用方法及簡單分析。
1. Python第三方庫xlrd
xlrd模塊可用于讀取excel文檔,是一種最常用的用例讀取方式,使用方式如下。以演示慣例---注冊接口為例,首先新建一個excel文檔,文檔中自定義接口用例參數(shù):
(以下data均為隨機生成,不涉及任何系統(tǒng))

python已安裝第三方庫后,開始讀取接口用例。本次為了方便演示,方法未進行封裝。
xlrd代碼演示
以下為實例代碼:
import unittest
import xlrd
# 打開接口用例excel文件
excel_data = xlrd.open_workbook('register.xlsx')
# 讀取excel文件中存放用例的sheet頁,命名無要求
sheet = excel_data.sheet_by_name('register')
print(sheet.nrows)
print(sheet.row_values(1))
# 將讀取到的用例全部追加到data列表中
data = []
for i in range(1, sheet.nrows):
data.append(sheet.row_values(i))
print(data)
class register(unittest.TestCase):
def test_register_check(self):
pass執(zhí)行py文件后,打印讀取data列表,成功讀取出excel文件中用例數(shù)據(jù):

但是上面的方法會把整個excel文件的用例全部存放到一個列表中,數(shù)據(jù)取用不太方便?,F(xiàn)在我們對數(shù)據(jù)進行拆分,結合ddt數(shù)據(jù)驅(qū)動方式,進行數(shù)據(jù)讀?。?/p>
import unittest
import xlrd
from ddt import ddt,data,unpack
excel_data = xlrd.open_workbook('register.xlsx')
sheet = excel_data.sheet_by_name('register')
# print(sheet.nrows)
# print(sheet.row_values(1))
data_ = []
for i in range(1, sheet.nrows):
data_.append(sheet.row_values(i))
print(data_)
# 引入的裝飾器@ddt;導入數(shù)據(jù)的@data;拆分數(shù)據(jù)的@unpack
@ddt
class register(unittest.TestCase):
@data(*data_)
@unpack
def test_register(self, title, data, check):
print(data)
if __name__ == '__main__':
unittest.main()通過ddt中的data及unpack方法,excel文件中的每條數(shù)據(jù)都是一個單獨的列表,更便于提供給接口測試用例使用:

xlrd模塊在接口自動化中的使用頻率非常高,調(diào)用方法也非常簡單。讀取到excel測試用例后,還可以使用裝飾器DDT進行數(shù)據(jù)拆分,使數(shù)據(jù)更加簡化。
xlrd適用于項目接口數(shù)據(jù)較少、接口字段不經(jīng)常調(diào)整的項目。如果項目中,接口數(shù)量非常多,在編寫接口用例時,存放用例的excel文件內(nèi)容會不斷擴充。測試用例的易讀性和維護性都會成為后期測試工作的難題,影響測試效率。
2. Python第三方庫pandas
pandas是python的一個數(shù)據(jù)分析包,可幫助使用者處理大型數(shù)據(jù)集。使用pandas中的DataFrame(二維的表格型數(shù)據(jù)結構)方法,即可獲取到excel表格中的測試數(shù)據(jù)。pandas與xrld一樣,都可讀取excel文件。
首先創(chuàng)建一個excel文件,存放測試數(shù)據(jù):

pandas代碼演示
實例代碼:
# 從excel文件中讀取用例,name參數(shù)為sheet名稱
def read_excel_data(inputdir,name):
dataframe = pandas.DataFrame(columns=['接口名','用例','請求地址','請求體','斷言','協(xié)議','請求方式']) # 傳入?yún)?shù)就是excel文件中的列名
try:
datafile = pandas.read_excel(inputdir,sheet_name=name)
dataframe = dataframe.append(datafile, ignore_index=True, sort=True)
except:
print("Warning:excel文件打開異常,請重試!")
To_list = dataframe.to_dict(orient='records') # 參數(shù)='records'時,轉(zhuǎn)化后是 list形式
return To_list
from common.data import read_excel_data
import pytest
def getdata(path):
getdata = read_excel_data(path, '編輯xx')
print(getdata)
path = r'..\common\接口用例文檔.xlsx' # excel文件的路徑,按實際項目結構指明
getdata(path)調(diào)用封裝好的方法,成功讀取到excel文件中的全部用例數(shù)據(jù):

該方法與xlrd類似,也是通過讀取二維表格中數(shù)據(jù)的方式,獲取到我們所需接口用例。
通過xlrd等方法讀取excel文件中的測試用例,是接口測試中比較主流的數(shù)據(jù)讀取方式。但是通過上面的案例展示可以發(fā)現(xiàn),如果excel文件中的數(shù)據(jù)越來越多,后期測試的維護成本是比較高的,同時表格格式在大篇幅數(shù)據(jù)中,也不方便閱讀。這也是此類方法的一個弊端。
3. Python第三方庫yaml
yaml是一種用來寫配置文件的序列化語言,文件格式輸出可以是列表、字典,也支持嵌套。層級關系用空格區(qū)分,但不支持tab縮進。
破折號和空格( “ - ” ):列表格式
# 以下數(shù)據(jù)會以list形式被讀取 - testapi - url - get

常見的yaml格式:
冒號和空格( “ :” ) :字典格式
# 以下數(shù)據(jù)會以dict形式被讀取
name: A
age: 1
spouse:
name: B
age: 2
slave:
- name: C # - 表示為列表
age: 3
- name1: D
age1: 4
yaml代碼演示
讀取yaml文件中的dict數(shù)據(jù),代碼如下:
import os
import yaml
class LoadTestData:
# 設置路徑,獲取yaml文件數(shù)據(jù)
def load_data(self, file_name):
yaml_path = os.path.join(os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), 'test_file'), file_name)
yaml_data = yaml.load(open(yaml_path), Loader=yaml.FullLoader)
# print(yaml_data)
return yaml_data
def get_yaml_data(api_file, api_name):
'''
獲取yaml中 api_name的數(shù)據(jù)
:param api_file: api文件位置
:param api_name: api文件名稱
:return: 文件數(shù)據(jù)
'''
data = LoadTestData().load_data(api_file)[api_name]
print(data)
return data
if __name__ == '__main__':
file_name = 'api_data.yaml'
api_name = 'test'
# LoadTestData().load_data(file_name)
get_yaml_data(file_name,api_name )
print('讀取成功')
請注意yaml.load在調(diào)用時,可能會因為yaml版本較高而提示異常。解決方法:指定loader = yaml.FullLoader可解決異常。
根據(jù)上面yaml的實際運用可以發(fā)現(xiàn),相比excel表格存放的數(shù)據(jù),yaml可讀性更好,而且python本身也支持新建yaml文件,與腳本語言的交互性更佳。對于不同的測試模塊,也可以新建不同的yaml文件,實現(xiàn)了功能模塊之間的測試數(shù)據(jù)隔離。
總結
測試中,不管是以excel表格存放數(shù)據(jù)還是yaml文件存放數(shù)據(jù),都能做到快速集成組裝測試數(shù)據(jù)。但excel表格存放數(shù)據(jù)過大時,有可讀性降低及腳本執(zhí)行時間較長等問題。yaml擁有簡潔、與python交互性高,可以把功能模板的測試數(shù)據(jù)相互隔離等優(yōu)點。但也需要對yaml的寫法規(guī)范有一些了解,才能正確使用。
到此這篇關于Python接口自動化 之用例讀取方法總結的文章就介紹到這了,更多相關Python 用例讀取內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
- Python接口自動化淺析如何處理動態(tài)數(shù)據(jù)
- Python接口自動化淺析如何處理接口依賴
- python接口自動化測試數(shù)據(jù)和代碼分離解析
- python中playwright結合pytest執(zhí)行用例的實現(xiàn)
- Python教程之pytest命令行方式運行用例
- Python+Opencv答題卡識別用例詳解
- Python接口自動化之文件上傳/下載接口詳解
- python+pytest接口自動化之token關聯(lián)登錄的實現(xiàn)
- python+pytest接口自動化之日志管理模塊loguru簡介
- Python自動化實戰(zhàn)之接口請求的實現(xiàn)
相關文章
python的tkinter、socket庫開發(fā)tcp的客戶端和服務端詳解
本文介紹了TCP通訊流程和開發(fā)步驟,包括客戶端和服務端的實現(xiàn),客戶端使用Python的tkinter庫實現(xiàn)圖形化界面,服務端使用socket庫監(jiān)聽連接并處理消息,文章還提供了客戶端和服務端的代碼示例2025-01-01
python 根據(jù)列表批量下載網(wǎng)易云音樂的免費音樂
這篇文章主要介紹了python 根據(jù)列表下載網(wǎng)易云音樂的免費音樂,幫助大家更好的理解和學習python,感興趣的朋友可以了解下2020-12-12
pycharm+PyQt5+python最新開發(fā)環(huán)境配置(踩坑)
這篇文章主要介紹了pycharm+PyQt5+python最新開發(fā)環(huán)境配置(踩坑),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-02-02
基于Python+tkinter實現(xiàn)簡易計算器桌面軟件
tkinter是Python的標準GUI庫,對于初學者來說,它非常友好,因為它提供了大量的預制部件,本文小編就來帶大家詳細一下如何利用tkinter制作一個簡易計算器吧2023-09-09
Python numpy數(shù)組轉(zhuǎn)置與軸變換
這篇文章主要介紹了Python numpy數(shù)組轉(zhuǎn)置與軸變換,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-11-11
python實現(xiàn)dnspod自動更新dns解析的方法
這篇文章主要介紹了python實現(xiàn)的dnspod自動更新dns解析的方法,需要的朋友可以參考下2014-02-02
python中的位置參數(shù)和關鍵字參數(shù)詳解
位置參數(shù)和關鍵字參數(shù)是 Python 中的兩種不同類型的函數(shù)參數(shù)傳遞方式,位置參數(shù)依賴于參數(shù)的位置順序,而關鍵字參數(shù)通過參數(shù)名傳遞,不受位置影響,本文通過代碼示例給大家詳細介紹了python中的位置參數(shù)和關鍵字參數(shù),需要的朋友可以參考下2023-12-12

