測試用例(TestCase)
一條測試用例(testcase)應該是為了測試某個特定的功能邏輯而精心設計的,並且至少包含如下幾點:
- 明確的測試目的(achieve a particular software testing objective)
- 明確的輸入(inputs)
- 明確的執行環境(execution conditions)
- 明確的測試步驟描述(testing procedure)
- 明確的預期結果(expected results)
對應地,HttpRunner 的測試用例描述方式進行如下設計:
- 測試用例應該是完整且獨立的,每條測試用例應該是都可以獨立執行的
- 在 HttpRunner 中,每個
YAML/JSON/pytest/go test
檔案對應一條測試用例 - HttpRunner 以
TestCase
為核心,將任意測試場景抽象為有序
步驟的集合
config配置
YAML/JSON 格式用例(testcase)結構延續了之前的config 和 teststeps 兩個部分
config: name: "login_imos_case" variables: username: admin password: quxue2023 headers: User-Agent: ${get_user_agent()} verify: False export: [ "foo3" ]
config屬性說明:
屬性名稱
|
是否必填 | 說明 |
name
|
是 | 測試用例名稱 |
variables | 否 | 指定測試用例的公共變數 |
headers | 否 | 公共請求頭部 |
verify | 否 | https請求時,是否校驗證書,預設True,忽略證書校驗可以設定為False |
export | 否 | 指定匯出的測試用例會話變數,把變數暴露出來,設定為全域性變數 |
parameters | 否 | 引數化設定,對整個檔案生效 |
除了上面的一些自動化會用到的引數,4.x 版本新增了一些關鍵字
屬性名稱 | 是否必填 | 作用 |
---|---|---|
websocket | 否 | WebSocket 斷開重連的最大次數和間隔等 |
think_time | 否 | 針對效能測試用,設定思考時間 |
weight | 否 | 針對效能測試用到,分配給當前測試用例的虛擬使用者權重優先順序 |
parameters_setting | 否 | 引數驅動的具體策略 |
environs | 否 | 環境變數,如果未指定則會從 .env 檔案匯入 |
path | 否 | 當前測試用例所在路徑 |
測試步驟
測試步驟 teststep 屬性
名稱 | 說明 |
---|---|
name | 名稱 |
api | 引用介面的步驟型別 |
testcase | 引用其他testcase的步驟型別 |
request | 發起 http請求的步驟型別 |
每個步驟可以新增以下屬性
名稱 | 說明 | 適用範圍 |
---|---|---|
setup_hooks | 前置函式 | request/api/websocket |
extract | 引數提取 | request/api/websocket |
teardown_hooks | 後置函式 | request/api/websocket |
validate | 結果校驗 | request/api/websocket |
export | 匯出變數 | testcase |
variables | 區域性變數 | 通用 |
4.x 版本新增其它關鍵字
名稱 | 說明 |
---|---|
think_time | 思考時間 |
rendezvous | 集合點 |
websocket | 用於發起 WebSocket 請求的步驟型別 |
transaction | 用於定義一個事務 |