diff --git a/examples/function_test.go b/examples/function_test.go index 81140e20..e9398240 100644 --- a/examples/function_test.go +++ b/examples/function_test.go @@ -12,22 +12,31 @@ func TestCaseCallFunction(t *testing.T) { Name: "run request with functions", BaseURL: "https://postman-echo.com", Verify: false, + Variables: map[string]interface{}{ + "n": 5, + "a": 12.3, + "b": 3.45, + }, }, TestSteps: []httpboomer.IStep{ httpboomer.Step("get with params"). - WithVariables(map[string]interface{}{ - "n": 5, - "a": 12.3, - "b": 3.45, - }). GET("/get"). WithParams(map[string]interface{}{"foo1": "${gen_random_string($n)}", "foo2": "${max($a, $b)}"}). WithHeaders(map[string]string{"User-Agent": "HttpBoomer"}). Extract(). WithJmesPath("body.args.foo1", "varFoo1"). Validate(). + AssertEqual("status_code", 200, "check status code"). AssertLengthEqual("body.args.foo1", 5, "check args foo1"). AssertEqual("body.args.foo2", "12.3", "check args foo2"), // notice: request params value will be converted to string + httpboomer.Step("post json data with functions"). + POST("/post"). + WithHeaders(map[string]string{"User-Agent": "HttpBoomer"}). + WithJSON(map[string]interface{}{"foo1": "${gen_random_string($n)}", "foo2": "${max($a, $b)}"}). + Validate(). + AssertEqual("status_code", 200, "check status code"). + AssertLengthEqual("body.json.foo1", 5, "check args foo1"). + AssertEqual("body.json.foo2", 12.3, "check args foo2"), }, } diff --git a/runner.go b/runner.go index 809fb0d1..4a39e7ad 100644 --- a/runner.go +++ b/runner.go @@ -114,7 +114,8 @@ func (r *Runner) runStepRequest(step *TStep) (stepData *StepData, err error) { v = append(v, data) } if step.Request.JSON != nil { - v = append(v, req.BodyJSON(step.Request.JSON)) + jsonData := parseData(step.Request.JSON, step.Variables) + v = append(v, req.BodyJSON(jsonData)) } for cookieName, cookieValue := range step.Request.Cookies {