pytest + yaml 框架 -7.用例分層機制

前言

在測試流程類接口時,我們常常需要反復調用同一個接口,這時可以考慮復用API。在代碼中,可以將API寫成函數(shù)進行調用。而在yaml文件中,我們可以將單個API定義在一個yaml文件中,并讓測試用例調用這個導入的API。

安裝插件

通過pip安裝pytest-yaml-yoyo插件。

pip install pytest-yaml-yoyo

用例分層功能在v1.0.5版本中實現(xiàn)。

用例分層分為兩層:API層和測試用例層。

API層:描述接口的請求,可以包含基本的驗證。 測試用例層:多個步驟按順序引用API。

pytest + yaml 框架 -7.用例分層機制

API層示例

API層僅用于描述接口,一般存放在項目根目錄下的api文件夾中。

api/login.yaml示例

name: post request:     method: POST     url: http://httpbin.org/post     json:         username: ${username}         password: "123456" validate:     - eq: [status_code, 200]

需要注意的是,API層不能單獨運行,因為它只是用例的一部分。用例執(zhí)行需要使用test_*.yml命名。

測試用例層

測試用例層通過api關鍵字導入所需的API,導入路徑為相對路徑,需根據(jù)項目根目錄導入。如果代碼無法識別項目根目錄,建議在項目根目錄下放置一個pytest.ini文件,pytest會以pytest.ini文件所在的目錄為項目根目錄。以下是項目結構示例:

├─api    └─ login.yml ├─testcase    └─ test_login.yml └─conftest.py └─pytest.ini

無論test_*.yml文件位于哪個目錄,都會從項目根目錄導入API的yaml文件。

config:     name: login case     base_url: http://124.70.221.221:8201     variables:         username: "test123"         password: "123456" teststeps: -    name: step login1     api: api/login.yml     extract:         url:  body.url     validate:         - eq: [status_code, 200]         - eq: [ok, true] -    name: step login2     api: api/login.yml

運行用例時,也需在項目根目錄執(zhí)行pytest命令。

pytest testcase

關于變量

API層可以引用變量,這些變量的值從用例目錄的variables加載,目前僅支持在config中設置用例全局變量

config:     name: login case     base_url: http://124.70.221.221:8201     variables:         username: "test123"         password: "123456"

可以將API理解為用例的一個步驟,是用例的一部分,導入后相當于將請求復制到用例步驟中。

關于校驗

在API層可以編寫一些基礎的校驗,如狀態(tài)碼校驗,但不應在API層編寫業(yè)務邏輯校驗。業(yè)務邏輯校驗應在用例層進行。

-    name: step login1     api: api/login.yml     extract:         url:  body.url     validate:         - eq: [status_code, 200]         - eq: [ok, true]

如果API層和用例層都有驗證,最后會合并到一起進行校驗。

? 版權聲明
THE END
喜歡就支持一下吧
點贊8 分享