自訂斷言
自訂斷言將需求轉化為 VM 工具可以執行的命令。 將它們用於小型預設套件未涵蓋的行為。
結構
每個客製化測試組都需要一個描述和一個或多個結構化的 斷言:
{
"description": "Verify the web service",
"category": "application",
"assertions": [
{
"type": "service_running",
"description": "Nginx is active",
"params": { "service": "nginx" },
"expected_visual": "The evidence panel shows nginx active"
},
{
"type": "http_responds",
"description": "Local health endpoint responds",
"params": { "url": "http://localhost/health", "status": 200 }
}
]
}description 在組別和每個斷言上都是必要的。 on_vm
在多VM測試環境中選擇VM ID;沒有它,跑步者會使用
primary。 expected_visual 在下列情況下提供預期的螢幕截圖狀態:
視覺證據門已啟動。
圍繞結果設計斷言
- 使用
service_running檢查服務,而不僅僅是其包是否存在。 - 在測試外部路由之前檢查本地端點。
- 使用
file_contains作為穩定的配置事實,而不是一個完整的文件 快照會在無害的格式化時中斷。 - 僅將
command_succeeds與確定性、非互動式指令一起使用。 - 僅在需要時才發出長命令
timeout_seconds。執行器夾 指令超時為 1–1,800 秒。 - 切勿將憑證放入命令、描述、預期輸出或 URL 中; 這些欄位可以出現在證據和日誌中。
失敗語義
未知類型目前被配方模型接受,但成為
error 執行程序找不到處理程序。省略的已知斷言
在測試計劃組裝期間可以刪除所需的參數,並發出警告。
因此,在之前驗證配方並檢查具體化的測試計劃
開始建造。
如果 on_vm 命名的 VM 不存在,則主張為 skipped。不
將 skipped 或 error 視為驗證成功。
多重虛擬機器範例
{
"description": "Client reaches the API node",
"assertions": [
{
"type": "http_responds",
"description": "API health is reachable from the client",
"on_vm": "client",
"params": { "url": "http://api:8080/health", "status": 200 }
}
],
"environment": {
"vms": [
{ "vm_id": "client", "role": "client", "networks": ["lan"] },
{ "vm_id": "api", "role": "server", "networks": ["lan"] }
],
"networks": [
{ "network_id": "lan", "type": "isolated", "dhcp": true }
]
}
}VM 名稱解析取決於測試拓樸及其發現的位址。 在運行中確認渲染的拓撲和斷言的解析命令 證據。
對於每個支援的類型和參數,請參閱 Assertion types。