Files
httprunner/examples/rendezvous_test.go
buyuxiang d7ff433818 feat: support rendezvous after spawn done
Change-Id: I4b07a88b61da4dc1863b189db9eb831ffb14130a
2022-01-25 14:25:14 +08:00

92 lines
2.6 KiB
Go

package examples
import (
"testing"
"github.com/httprunner/hrp"
)
var rendezvousTestcase = &hrp.TestCase{
Config: hrp.NewConfig("run request with functions").
SetBaseURL("https://postman-echo.com").
WithVariables(map[string]interface{}{
"n": 5,
"a": 12.3,
"b": 3.45,
}),
TestSteps: []hrp.IStep{
// rendezvous boundary test
hrp.NewStep("test negative number").
Rendezvous("test negative number").
WithUserNumber(-1),
hrp.NewStep("test overflow number").
Rendezvous("test overflow number").
WithUserNumber(1000000),
hrp.NewStep("test negative percent").
Rendezvous("test very low percent").
WithUserPercent(-0.5),
hrp.NewStep("test very low percent").
Rendezvous("test very low percent").
WithUserPercent(0.00001),
hrp.NewStep("test overflow percent").
Rendezvous("test overflow percent").
WithUserPercent(1.5),
hrp.NewStep("test conflict params").
Rendezvous("test conflict params").
WithUserNumber(1).
WithUserPercent(0.123),
hrp.NewStep("test negative timeout").
Rendezvous("test negative timeout").
WithTimeout(-1000),
// rendezvous normal test
hrp.NewStep("waiting for all users in the beginning").
Rendezvous("rendezvous0").
WithUserNumber(10).
WithTimeout(3000),
hrp.NewStep("rendezvous before get").
Rendezvous("rendezvous1").
WithUserNumber(10).
WithTimeout(3000),
hrp.NewStep("get with params").
GET("/get").
WithParams(map[string]interface{}{"foo1": "foo1", "foo2": "foo2"}).
WithHeaders(map[string]string{"User-Agent": "HttpRunnerPlus"}).
Extract().
WithJmesPath("body.args.foo1", "varFoo1").
Validate().
AssertEqual("status_code", 200, "check status code"),
hrp.NewStep("rendezvous before post").
Rendezvous("rendezvous2").
WithUserNumber(20).
WithTimeout(2000),
hrp.NewStep("post json data with functions").
POST("/post").
WithHeaders(map[string]string{"User-Agent": "HttpRunnerPlus"}).
WithBody(map[string]interface{}{"foo1": "foo1", "foo2": "foo2"}).
Validate().
AssertEqual("status_code", 200, "check status code").
AssertLengthEqual("body.json.foo1", 4, "check args foo1").
AssertEqual("body.json.foo2", "foo2", "check args foo2"),
hrp.NewStep("waiting for all users in the end").
Rendezvous("rendezvous3"),
},
}
func TestRendezvous(t *testing.T) {
err := hrp.NewRunner(t).Run(rendezvousTestcase)
if err != nil {
t.Fatalf("run testcase error: %v", err)
}
}
func TestRendezvousDump2JSON(t *testing.T) {
tCase, err := rendezvousTestcase.ToTCase()
if err != nil {
t.Fatalf("ToTCase error: %v", err)
}
err = tCase.Dump2JSON("rendezvous_test.json")
if err != nil {
t.Fatalf("dump to json error: %v", err)
}
}