5、能夠實現測試用例集的前置後置步驟(類似unittest的setupclass和teardownclass)
6、能夠實現測試用例的前置後置步驟(類似unittest的setup和teardown)
8、測試腳本和框架代碼完全分離,懂接口測試但是不懂代碼的人一天即可完全掌握,超低的學習使用成本
進一步交流可以+羣:929233070
在cmd窗口中切換到依賴庫文件所在的目錄, 輸入如下命令即可:pip install -r requirements.txt
第四步:下載框架代碼, 下載地址:https://github.com/duodongduode/interface_auto_test
第五步:使用pycharm打開框架代碼, 恭喜你,你已經完成所有的準備工作啦。
testcase_run.py文件最後一行代碼是設置執行的用例數據,可以是文件夾, 也可以是某個指定的文件, 是一個相對路徑,打開這個文件右鍵執行就好。
打開框架代碼之後,目前你只需要瞭解test_data目錄,test_data目錄下面有三個子目錄, common、 api_template、 testcase
common: 定義全局變量的目錄,裏面有一個common.yaml文件, 裏面定義全局變量
demo中定義了系統的基礎路徑、登陸系統的用戶名和密碼, 系統對應的數據庫配置(數據庫配置中的用戶名、密碼、ip、端口、庫名字的變量名稱不可變,否則會連接數據庫失敗),這個文件中可以定義任何你想要的全局變量,名字可以取任意英文名,
api_template:存在被測試系統的api定義,定義api的請求的url、方法、請求頭、cookie、數據、驗證方法、參數提取,這樣做的目的是我們在寫測試用例時,關注測試用例的數據,而非接口的調用,讓接口維護更加容易, 使用的時候不一定非要定義api接口模板的,只是說用了會更好維護一點,用例更加簡潔一些。
testcase:測試用例目錄,下面可以建子目錄,讓用例不同功能塊的用例歸檔到不同的目錄中, 一般一個接口建一個用例文件, 一個文件就是一個用例集
一個用例集類似於unittest框架特點,有用例集前置步驟(setupclass) 用例前置步驟(setup) 用例(testcase) 用例後置步驟(teardown) 用例集後置步驟(teardownclass)
setupclass setup teardown teardownclass在一個用例集中只能最多有一個(可以沒有), testcase可以有多個
用例集的執行順序 setupclass setup testcase1 teardown setup testcase2 teardown ........ setup testcaseN teardown teardownclass
從給定的順序可以看出,和unittest框架的testcase類執行順序完全一致。
variable:定義變量,可以定義多個 如果變量定義在 setupclass teardownclass結構中,那麼變量的作用域就是整個測試用例集, 定義在 setup testcase1 teardown 中的變量都是本用例有效
step: 用例步驟, 一個用例可以有很多個步驟, 一個步驟就是一次接口調用或者數據庫操作
api:引用的api路徑 格式:文件名_接口名 (非必須, 有的話可以減少一些)
url: 接口請求的路徑, 會覆蓋引用api中的url,如果用例中沒有寫url,以引用api中的url爲準
method:接口請求的方法, 會覆蓋引用api中的method,如果用例中沒有寫method,以引用api中的method爲準
header:接口請求的請求頭, 會把引用api中定義的請求頭合併
cookie:接口請求的cookie, 會把引用api中定義的cookie合併
data:發送的數據, 如果是發送json數據接口,會替換api模板中定義的數據, 其他類型的接口,都會合並api模板中定義的數據
每個步驟都可以添加參數比較器,但是這個不是必須的, 而且一個參數比較器中可以添加多個驗證點
module: 取值模塊 response_code(取響應碼),header(從響應頭取值),cookie(從cookie中取值),response_content(從響應數據中取值)
value_path: 取值方式,是jsonpath表達式,是響應碼這個字段可以不填
操作符 |
說明 |
= |
比較兩個數據相等,可以數字,也可以是字符串, 相等返回 true ,不相等返回false |
!= |
比較兩個數據不相等,可以數字,也可以是字符串, 不相等返回 true ,相等返回false |
> |
判斷兩個數 實際值大於預期值, 大於返回true 否則返回false |
>= |
判斷兩個數 實際值大於等於預期值, 大於等於返回true 否則返回false |
< |
判斷兩個數 實際值小於預期值, 小於返回true 否則返回false |
<= |
判斷兩個數 實際值小於等於預期值, 小於等於返回true 否則返回false |
contains |
判斷 兩個字符串, 實際值包含預期值, 包含返回true , 不包含返回false |
not contains |
判斷 兩個字符串, 實際值不包含預期值, 不包含返回true , 不包含返回false |
none |
判斷實際值是none , none 返回true , 非 none 返回false |
not none |
判斷實際值是 not none , not none 返回true , none 返回false |
value_path: $.X.Y 表示取sql查詢結果中的X行,第N列數據
每一個步驟中可以有參數提取器,參數提取器非必須,根據需要使用,用於做接口關聯,提取的參數作用域可以是全局,測試用例集 、測試用例
module:取值模塊 response_code(取響應碼),header(從響應頭取值),cookie(從cookie中取值),response_content(從響應數據中取值)
value_path: 取值方式,是jsonpath表達式,是響應碼這個字段可以不填
parameter_level: 提取參數的級別 # testcase(用例級)、 testsuite(測試用例級)、 global(全局)
value_path: $.X.Y 表示取sql查詢結果中的X行,第N列數據
parameter_level: 提取參數的級別 # testcase(用例級)、 testsuite(測試用例級)、 global(全局)
變量引用參考了jmeter的變量引用格式,即 ${變量名} , 如果用例級變量, 測試用例集級變量,全局變量中都有對應的名字的變量, 優先級
函數名 |
作用 |
引用方法 |
random_choice |
從給定的值中隨機選擇一個 |
${{ random_choice( 3,4,5,6,10) }} 從2,3,5,6,10中隨機選擇一個值 |
random_int |
生成一個隨機整數 |
${{ random_int(10,100)}} 生成一個10-100之間的隨機整數 |
random_str |
生一個指定長度的隨機字符串 |
${{ random_str(10)}} 生成一個長度爲10的隨機字符串 |