MCPcopy
hub / github.com/httprunner/httprunner / TestParseDataStringWithVariables

Function TestParseDataStringWithVariables

hrp/parser_test.go:158–221  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

156}
157
158func TestParseDataStringWithVariables(t *testing.T) {
159 variablesMapping := map[string]interface{}{
160 "var_1": "abc",
161 "var_2": "def",
162 "var_3": 123,
163 "var_4": map[string]interface{}{"a": 1},
164 "var_5": true,
165 "var_6": nil,
166 "v": 4.5, // variable name with one character
167 "_v": 6.9, // variable name starts with underscore
168 }
169
170 testData := []struct {
171 expr string
172 expect interface{}
173 }{
174 // no variable
175 {"var_1", "var_1"},
176 // single variable
177 {"$var_1", "abc"},
178 {"${var_1}", "abc"},
179 {"$var_3", 123},
180 {"$var_4", map[string]interface{}{"a": 1}},
181 {"${var_4}", map[string]interface{}{"a": 1}},
182 {"$var_5", true},
183 {"$var_6", nil},
184 {"$v", 4.5},
185 {"var_1$_v", "var_16.9"},
186 // single variable with prefix or suffix
187 {"$var_1#XYZ", "abc#XYZ"},
188 {"${var_1}#XYZ", "abc#XYZ"},
189 {"ABC$var_1", "ABCabc"},
190 {"ABC${var_1}", "ABCabc"},
191 {"ABC$var_1/", "ABCabc/"},
192 {"ABC${v}/", "ABC4.5/"},
193 // multiple variables
194 {"/$var_1/$var_2/var3", "/abc/def/var3"},
195 {"/${var_1}/$var_2/var3", "/abc/def/var3"},
196 {"ABC$var_1$var_3", "ABCabc123"},
197 {"ABC$var_1${var_3}", "ABCabc123"},
198 {"ABC$var_1/$var_3", "ABCabc/123"},
199 {"ABC${var_1}/${var_3}", "ABCabc/123"},
200 {"ABC$var_1/123$var_1/456", "ABCabc/123abc/456"},
201 {"ABC$var_1/123${var_1}/456", "ABCabc/123abc/456"},
202 {"ABC$var_1/$var_2/$var_1", "ABCabc/def/abc"},
203 {"ABC$var_1/$var_2/${var_1}", "ABCabc/def/abc"},
204 {"func1($var_1, $var_3)", "func1(abc, 123)"},
205 {"func1($var_1, ${var_3})", "func1(abc, 123)"},
206 // TODO: fix compatibility with python version
207 {"abc$var_4", "abcmap[a:1]"}, // "abc{'a': 1}"
208 {"abc$var_5", "abctrue"}, // "abcTrue"
209 }
210
211 parser := newParser()
212 for _, data := range testData {
213 parsedData, err := parser.Parse(data.expr, variablesMapping)
214 if !assert.NoError(t, err) {
215 t.Fatal()

Callers

nothing calls this directly

Calls 2

newParserFunction · 0.85
ParseMethod · 0.80

Tested by

no test coverage detected