您當前的位置:首頁 > 繪畫

Python介面自動化測試之資料引數化

作者:由 夏蟲不可語冰 發表于 繪畫時間:2022-05-11

前言:

在介面測試中,介面的請求引數不可能一直一成不變,如果只有一兩個介面的時候,可以直接在程式碼中更改對應的值,但如果介面多達上百個的時候,一行一行的在程式碼中改引數, 是極其痛苦的一件事。這個時候,使用資料引數化的優點就體現出來了,只需要把所有引數寫到同一個地方,任一引數改變時,到指定地方修改該引數的值就可以了。

資料引數化的方式:

1、使用txt檔案儲存資料,這樣的優點在於txt檔案易於讀取,不論是linux還是windows下都容易開啟。

2、使用csv檔案儲存,優點在於,可以使用excel軟體開啟,這樣看上去資料會比較清晰。

3、使用json檔案(注意是檔案),這樣的優點也是可以直接查詢key值得到對應的values。

但是!但是!但是!

從txt和csv檔案中讀取到的資料是這樣的:

[request_id,nonce,aa,bb,cc]

可以看出是一個數組型別,那麼提取值時就必須使用list[0],list[1],list[2]這樣的方式提取,但真正的問題在於,你記得第一個對應的是哪一個值嗎?如果在兩個引數中間再增加一個引數,是不是就全亂了?所以理論上應該使用json檔案做資料引數化,但是!但是!但是!json資料不支援註釋,資料一多,也是亂七八糟的。那麼該如何處理呢?

Python字典引數化:

其實,我們不必要緣木求魚,也不必捨近求遠,有時候我們寤寐思服,求而不得的東西,往往就在你容易忽略的地方,Python語言本身就提供了一個字典型別。使用字典做資料引數化,只需要dict[“name”]就可以了。那麼接下來就是實際的操作。

示例:

新建一個檔案Data。py,將以下程式碼複製進去:

# 多個不同的引數時寫成多個不同的字典即可

data

=

{

“url”

“https://openapi。dvr163。com/message/nonce”

# url地址

“method”

“get”

#請求引數

}

在測試的demo中匯入並使用:

import

requests

import

pandas

import

time

from

Data

import

data

#http請求demo

def

GetTest

data

):

#介面請求

url

=

data

“url”

Param

=

{

# 傳遞的引數,字典型別,所有引數寫在這裡即可

“method”

data

“method”

}

Rque

=

requests

get

url

Param

# 發起Get請求

#測試資料

data

=

{

“Interface”

“獲取伺服器驗證碼”

#介面名稱

“time”

time

strftime

‘%Y-%m-

%d

_%H:%M:%S’

time

localtime

time

time

())),

#測試時間,這裡使用格式化時間,

“StatusCode”

:[

Rque

status_code

#介面響應狀態碼

“Responseime”

:[

Rque

elapsed

total_seconds

()],

#介面響應時間

“Response DATA”

Rque

text

#響應的資料,這裡建議使用text,因為不是每個介面都返回json格式

“Request body”

Rque

request

body

# 傳送的資料,get請求的資料會在url中

“Url”

Rque

url

# 請求的url

#更多引數請自行新增

}

#寫入csv中,以下兩行程式碼建議封裝成函式

dataCSV

=

pandas

DataFrame

data

dataCSV

to_csv

“chen。csv”

index

=

False

mode

=

“a”

header

=

False

encoding

=

“GBK”

GetTest

data

“”“

參考以上程式碼即可實現資料引數化,將字典單獨存放到一個檔案的好處是方便後面修改資料

在函式內呼叫時,記得要把引數傳入,即 def GetTest(data):(注意括號中的data)

”“”

目錄結構:

Python介面自動化測試之資料引數化

總結:

資料引數化只須使用pyhton提供的字典型別即可。根據key值獲取到相應的值,邏輯清晰也易於指令碼的維護。

標簽: 引數  data  url  介面  Rque