runnによるシナリオテスト
Appendix-1 サンプルコード
scenario_test.go
//go:build scenariotest
package scenario_test
import (
"context"
"testing"
"github.com/k1LoW/runn"
)
func Test_ScenarioTest(t *testing.T) {
runner, err := runn.Load(
"./test.yaml",
runn.T(t),
runn.Runner("req", "http://localhost:8080"),
runn.Runner("db", "xxxxxx"),
)
if err != nil {
t.Fatal(err)
}
ctx := context.TODO()
if err := runner.RunN(ctx); err != nil {
t.Fatal(err)
}
}
test.yaml
desc: "プロジェクト一覧を取得"
debug: true
runners:
db:
dsn: xxxxxx
steps:
step01:
req:
/project:
get:
body: null
test: steps.step01.res.status == 200
step02:
test: len(steps.step01.res.body.project) == 2
step03:
db:
query: "SELECT * FROM project;"
test: len(steps.step03.rows) > 1