diff --git a/convert.go b/convert.go index add6e415..66cfd343 100644 --- a/convert.go +++ b/convert.go @@ -102,3 +102,23 @@ func loadFromYAML(path string) (*TCase, error) { err = yaml.Unmarshal(file, tc) return tc, err } + +func convertTestCase(tc *TCase) (*TestCase, error) { + testCase := &TestCase{ + Config: tc.Config, + } + for _, step := range tc.TestSteps { + if step.Request != nil { + testCase.TestSteps = append(testCase.TestSteps, &requestWithOptionalArgs{ + step: step, + }) + } else if step.TestCase != nil { + testCase.TestSteps = append(testCase.TestSteps, &testcaseWithOptionalArgs{ + step: step, + }) + } else { + log.Printf("[convertTestCase] unexpected step: %+v", step) + } + } + return testCase, nil +} diff --git a/convert_test.go b/convert_test.go index 88622cbe..eaad39d2 100644 --- a/convert_test.go +++ b/convert_test.go @@ -96,3 +96,19 @@ func TestDumpAndLoadYAML(t *testing.T) { t.Fail() } } + +func TestLoadJSONAndRun(t *testing.T) { + jsonPath := "demo.json" + tc, err := loadFromJSON(jsonPath) + if !assert.NoError(t, err) { + t.Fail() + } + testcase, err := convertTestCase(tc) + if !assert.NoError(t, err) { + t.Fail() + } + err = Test(t, testcase) + if err != nil { + t.Fatalf("run testcase error: %v", err) + } +}