前言
httprunner 分層主要是分三層:api、testcase、testsuites
前面講分層的時候講到api單獨封裝每個接口,testcase可以有多個測試步驟,調用api層的接口是寫測試用例,用例的步驟是有序的。
testsuites 這一層是測試用例的集合,把測試用例放到一個測試套件去執行,用例執行應該是無序的,有依賴的場景在testcase這一層測試用例里面就已經按步驟寫好了。
測試用例集(testsuite)
當測試用例數量比較多以后,為了方便管理和實現批量運行,通常需要使用測試用例集來對測試用例進行組織。
在前文的測試用例分層模型中也強調了,測試用例集(testsuite)是測試用例的 無序 集合,集合中的測試用例應該都是相互獨立,不存在先后依賴關系的;如果確實存在先后依賴關系,那就需要在測試用例中完成依賴的處理。
因為是 無序 集合,因此測試用例集的描述形式會與測試用例有些不同,在每個測試用例集文件中,第一層級存在兩類字段:
- config: 測試用例集的總體配置參數
- testcases: 值為字典結構(無序),key 為測試用例的名稱,value 為測試用例的內容;在引用測試用例時也可以指定 variables,實現對引用測試用例中 variables 的覆蓋。
非參數化場景
api 層兩個接口api/login.yml
# api/login.yml
# 上海-悠悠,httprunner QQ交流群:717225969
name: login first
base_url: http://127.0.0.1:8000
variables:
user: test
password: 123456
request:
url: /api/v1/login/
method: POST
headers:
Content-Type: application/json
User-Agent: python-requests/2.18.4
json:
username: $user
password: $password
validate:
- eq: [status_code, 200]
- eq: [headers.Content-Type, application/json]
- eq: [content.msg, login success!]
- eq: [content.code, 0]
api/get_userinfo.yml 內容
# api/get_userinfo.yml
# 上海-悠悠,httprunner QQ交流群:717225969
name: get user info case1
base_url: http://127.0.0.1:8000
variables:
token: 1c5ef1856edec117ac989eb8def4abbaae28673e
request:
url: /api/v1/userinfo/
method: GET
headers:
Content-Type: application/json
User-Agent: python-requests/2.18.4
Authorization: Token $token # 引用token
case用例層,寫一個登錄用例
# case/test_login.yml
# 上海-悠悠,httprunner QQ交流群:717225969
- config:
name: "test userinfo"
- test:
name: login-setup
api: api/login.yml
extract:
- get_token: content.token
validate:
- eq: ["status_code", 200]
- len_eq: ["content.token", 40]
testsuites 層可以把測試用例放一起執行
config:
name: 創建測試計划
base_url: http://127.0.0.1:8000
testcases:
用戶test1登陸:
testcase: case/test_login.yml
variables:
user: test1
password: 123456
用戶test2登陸:
testcase: case/test_login.yml
variables:
user: test2
password: 123456
注意 testsuites 這一層必須是引用 testcase ,不能直接引用 api