mirror of
https://github.com/httprunner/httprunner.git
synced 2026-05-12 02:21:29 +08:00
feat: support rendezvous after spawn done
Change-Id: I4b07a88b61da4dc1863b189db9eb831ffb14130a
This commit is contained in:
91
examples/rendezvous_test.go
Normal file
91
examples/rendezvous_test.go
Normal file
@@ -0,0 +1,91 @@
|
||||
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)
|
||||
}
|
||||
}
|
||||
152
examples/rendezvous_test.json
Normal file
152
examples/rendezvous_test.json
Normal file
@@ -0,0 +1,152 @@
|
||||
{
|
||||
"config": {
|
||||
"name": "run request with functions",
|
||||
"base_url": "https://postman-echo.com",
|
||||
"variables": {
|
||||
"a": 12.3,
|
||||
"b": 3.45,
|
||||
"n": 5
|
||||
}
|
||||
},
|
||||
"teststeps": [
|
||||
{
|
||||
"name": "test negative number",
|
||||
"rendezvous": {
|
||||
"name": "test negative number",
|
||||
"number": -1
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "test overflow number",
|
||||
"rendezvous": {
|
||||
"name": "test overflow number",
|
||||
"number": 1000000
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "test negative percent",
|
||||
"rendezvous": {
|
||||
"name": "test very low percent",
|
||||
"percent": -0.5
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "test very low percent",
|
||||
"rendezvous": {
|
||||
"name": "test very low percent",
|
||||
"percent": 0.00001
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "test overflow percent",
|
||||
"rendezvous": {
|
||||
"name": "test overflow percent",
|
||||
"percent": 1.5
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "test conflict params",
|
||||
"rendezvous": {
|
||||
"name": "test conflict params",
|
||||
"percent": 0.123,
|
||||
"number": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "test negative timeout",
|
||||
"rendezvous": {
|
||||
"name": "test negative timeout",
|
||||
"timeout": -1000
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "waiting for all users in the beginning",
|
||||
"rendezvous": {
|
||||
"name": "rendezvous0",
|
||||
"number": 10,
|
||||
"timeout": 3000
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "rendezvous before get",
|
||||
"rendezvous": {
|
||||
"name": "rendezvous1",
|
||||
"number": 10,
|
||||
"timeout": 3000
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "get with params",
|
||||
"request": {
|
||||
"method": "GET",
|
||||
"url": "/get",
|
||||
"params": {
|
||||
"foo1": "foo1",
|
||||
"foo2": "foo2"
|
||||
},
|
||||
"headers": {
|
||||
"User-Agent": "HttpRunnerPlus"
|
||||
}
|
||||
},
|
||||
"extract": {
|
||||
"varFoo1": "body.args.foo1"
|
||||
},
|
||||
"validate": [
|
||||
{
|
||||
"check": "status_code",
|
||||
"assert": "equals",
|
||||
"expect": 200,
|
||||
"msg": "check status code"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "rendezvous before post",
|
||||
"rendezvous": {
|
||||
"name": "rendezvous2",
|
||||
"number": 20,
|
||||
"timeout": 2000
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "post json data with functions",
|
||||
"request": {
|
||||
"method": "POST",
|
||||
"url": "/post",
|
||||
"headers": {
|
||||
"User-Agent": "HttpRunnerPlus"
|
||||
},
|
||||
"body": {
|
||||
"foo1": "foo1",
|
||||
"foo2": "foo2"
|
||||
}
|
||||
},
|
||||
"validate": [
|
||||
{
|
||||
"check": "status_code",
|
||||
"assert": "equals",
|
||||
"expect": 200,
|
||||
"msg": "check status code"
|
||||
},
|
||||
{
|
||||
"check": "body.json.foo1",
|
||||
"assert": "length_equals",
|
||||
"expect": 4,
|
||||
"msg": "check args foo1"
|
||||
},
|
||||
{
|
||||
"check": "body.json.foo2",
|
||||
"assert": "equals",
|
||||
"expect": "foo2",
|
||||
"msg": "check args foo2"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "waiting for all users in the end",
|
||||
"rendezvous": {
|
||||
"name": "rendezvous3"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user