前言
在測試流程類接口時,我們常常需要反復調用同一個接口,這時可以考慮復用API。在代碼中,可以將API寫成函數(shù)進行調用。而在yaml文件中,我們可以將單個API定義在一個yaml文件中,并讓測試用例調用這個導入的API。
安裝插件
pip install pytest-yaml-yoyo
用例分層功能在v1.0.5版本中實現(xiàn)。
用例分層分為兩層:API層和測試用例層。
API層:描述接口的請求,可以包含基本的驗證。 測試用例層:多個步驟按順序引用API。
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層和用例層都有驗證,最后會合并到一起進行校驗。