feat: create empty project by using hrp startproject #1280

This commit is contained in:
xucong053
2022-05-23 21:50:45 +08:00
parent 9f9ab86b8f
commit 692704c4a4
17 changed files with 377 additions and 206 deletions

View File

@@ -1,6 +0,0 @@
{
"project_name": "demo-with-go-plugin",
"project_path": "/Users/debugtalk/MyProjects/HttpRunner-dev/httprunner/examples/demo-with-go-plugin",
"create_time": "2022-05-25T11:14:42.750876+08:00",
"hrp_version": "v4.1.0-beta"
}

View File

@@ -28,6 +28,15 @@ teststeps:
Content-Type: "application/x-www-form-urlencoded"
data: "foo1=$foo1&foo2=$foo3"
validate:
- eq: ["status_code", 200]
- eq: ["body.form.foo1", "bar1"]
- eq: ["body.form.foo2", "bar21"]
- check: status_code
assert: equal
expect: 200
msg: check status_code
- check: body.form.foo1
assert: equal
expect: bar1
msg: check body.form.foo1
- check: body.form.foo2
assert: equal
expect: bar21
msg: check body.form.foo2

View File

@@ -38,28 +38,28 @@
},
"validate": [
{
"eq": [
"status_code",
200
]
"check": "status_code",
"assert": "equal",
"expect": 200,
"msg": "check status_code"
},
{
"eq": [
"body.args.foo1",
"debugtalk"
]
"check": "body.args.foo1",
"assert": "equal",
"expect": "debugtalk",
"msg": "check body.args.foo1"
},
{
"eq": [
"body.args.sum_v",
"3"
]
"check": "body.args.sum_v",
"assert": "equal",
"expect": "3",
"msg": "check body.args.sum_v"
},
{
"eq": [
"body.args.foo2",
"bar21"
]
"check": "body.args.foo2",
"assert": "equal",
"expect": "bar21",
"msg": "check body.args.foo2"
}
]
},
@@ -80,16 +80,16 @@
},
"validate": [
{
"eq": [
"status_code",
200
]
"check": "status_code",
"assert": "equal",
"expect": 200,
"msg": "check status_code"
},
{
"eq": [
"body.data",
"This is expected to be sent back as part of response body: bar12-$expect_foo2-bar32."
]
"check": "body.data",
"assert": "equal",
"expect": "This is expected to be sent back as part of response body: bar12-$expect_foo2-bar32.",
"msg": "check body.data"
}
]
},
@@ -109,28 +109,28 @@
},
"validate": [
{
"eq": [
"status_code",
200
]
"check": "status_code",
"assert": "equal",
"expect": 200,
"msg": "check status_code"
},
{
"eq": [
"body.form.foo1",
"$expect_foo1"
]
"check": "body.form.foo1",
"assert": "equal",
"expect": "$expect_foo1",
"msg": "check body.form.foo1"
},
{
"eq": [
"body.form.foo2",
"bar23"
]
"check": "body.form.foo2",
"assert": "equal",
"expect": "bar23",
"msg": "check body.form.foo2"
},
{
"eq": [
"body.form.foo3",
"bar21"
]
"check": "body.form.foo3",
"assert": "equal",
"expect": "bar21",
"msg": "check body.form.foo3"
}
]
}

View File

@@ -27,10 +27,22 @@ teststeps:
extract:
foo3: "body.args.foo2"
validate:
- eq: ["status_code", 200]
- eq: ["body.args.foo1", "debugtalk"]
- eq: ["body.args.sum_v", "3"]
- eq: ["body.args.foo2", "bar21"]
- check: status_code
assert: equal
expect: 200
msg: check status_code
- check: body.args.foo1
assert: equal
expect: debugtalk
msg: check body.args.foo1
- check: body.args.sum_v
assert: equal
expect: "3"
msg: check body.args.sum_v
- check: body.args.foo2
assert: equal
expect: bar21
msg: check body.args.foo2
-
name: post raw text
variables:
@@ -44,8 +56,14 @@ teststeps:
Content-Type: "text/plain"
data: "This is expected to be sent back as part of response body: $foo1-$foo2-$foo3."
validate:
- eq: ["status_code", 200]
- eq: ["body.data", "This is expected to be sent back as part of response body: bar12-$expect_foo2-bar32."]
- check: status_code
assert: equal
expect: 200
msg: check status_code
- check: body.data
assert: equal
expect: "This is expected to be sent back as part of response body: bar12-$expect_foo2-bar32."
msg: check body.data
-
name: post form data
variables:
@@ -58,7 +76,19 @@ teststeps:
Content-Type: "application/x-www-form-urlencoded"
data: "foo1=$foo1&foo2=$foo2&foo3=$foo3"
validate:
- eq: ["status_code", 200]
- eq: ["body.form.foo1", "$expect_foo1"]
- eq: ["body.form.foo2", "bar23"]
- eq: ["body.form.foo3", "bar21"]
- check: status_code
assert: equal
expect: 200
msg: check status_code
- check: body.form.foo1
assert: equal
expect: $expect_foo1
msg: check body.form.foo1
- check: body.form.foo2
assert: equal
expect: bar23
msg: check body.form.foo2
- check: body.form.foo3
assert: equal
expect: bar21
msg: check body.form.foo3

View File

@@ -1,6 +0,0 @@
{
"project_name": "demo-with-py-plugin",
"project_path": "/Users/debugtalk/MyProjects/HttpRunner-dev/httprunner/examples/demo-with-py-plugin",
"create_time": "2022-05-25T11:14:52.333942+08:00",
"hrp_version": "v4.1.0-beta"
}

View File

@@ -28,6 +28,15 @@ teststeps:
Content-Type: "application/x-www-form-urlencoded"
data: "foo1=$foo1&foo2=$foo3"
validate:
- eq: ["status_code", 200]
- eq: ["body.form.foo1", "bar1"]
- eq: ["body.form.foo2", "bar21"]
- check: status_code
assert: equal
expect: 200
msg: check status_code
- check: body.form.foo1
assert: equal
expect: bar1
msg: check body.form.foo1
- check: body.form.foo2
assert: equal
expect: bar21
msg: check body.form.foo2

View File

@@ -38,28 +38,28 @@
},
"validate": [
{
"eq": [
"status_code",
200
]
"check": "status_code",
"assert": "equal",
"expect": 200,
"msg": "check status_code"
},
{
"eq": [
"body.args.foo1",
"debugtalk"
]
"check": "body.args.foo1",
"assert": "equal",
"expect": "debugtalk",
"msg": "check body.args.foo1"
},
{
"eq": [
"body.args.sum_v",
"3"
]
"check": "body.args.sum_v",
"assert": "equal",
"expect": "3",
"msg": "check body.args.sum_v"
},
{
"eq": [
"body.args.foo2",
"bar21"
]
"check": "body.args.foo2",
"assert": "equal",
"expect": "bar21",
"msg": "check body.args.foo2"
}
]
},
@@ -80,16 +80,16 @@
},
"validate": [
{
"eq": [
"status_code",
200
]
"check": "status_code",
"assert": "equal",
"expect": 200,
"msg": "check status_code"
},
{
"eq": [
"body.data",
"This is expected to be sent back as part of response body: bar12-$expect_foo2-bar32."
]
"check": "body.data",
"assert": "equal",
"expect": "This is expected to be sent back as part of response body: bar12-$expect_foo2-bar32.",
"msg": "check body.data"
}
]
},
@@ -109,28 +109,28 @@
},
"validate": [
{
"eq": [
"status_code",
200
]
"check": "status_code",
"assert": "equal",
"expect": 200,
"msg": "check status_code"
},
{
"eq": [
"body.form.foo1",
"$expect_foo1"
]
"check": "body.form.foo1",
"assert": "equal",
"expect": "$expect_foo1",
"msg": "check body.form.foo1"
},
{
"eq": [
"body.form.foo2",
"bar23"
]
"check": "body.form.foo2",
"assert": "equal",
"expect": "bar23",
"msg": "check body.form.foo2"
},
{
"eq": [
"body.form.foo3",
"bar21"
]
"check": "body.form.foo3",
"assert": "equal",
"expect": "bar21",
"msg": "check body.form.foo3"
}
]
}

View File

@@ -27,10 +27,22 @@ teststeps:
extract:
foo3: "body.args.foo2"
validate:
- eq: ["status_code", 200]
- eq: ["body.args.foo1", "debugtalk"]
- eq: ["body.args.sum_v", "3"]
- eq: ["body.args.foo2", "bar21"]
- check: status_code
assert: equal
expect: 200
msg: check status_code
- check: body.args.foo1
assert: equal
expect: debugtalk
msg: check body.args.foo1
- check: body.args.sum_v
assert: equal
expect: "3"
msg: check body.args.sum_v
- check: body.args.foo2
assert: equal
expect: bar21
msg: check body.args.foo2
-
name: post raw text
variables:
@@ -44,8 +56,14 @@ teststeps:
Content-Type: "text/plain"
data: "This is expected to be sent back as part of response body: $foo1-$foo2-$foo3."
validate:
- eq: ["status_code", 200]
- eq: ["body.data", "This is expected to be sent back as part of response body: bar12-$expect_foo2-bar32."]
- check: status_code
assert: equal
expect: 200
msg: check status_code
- check: body.data
assert: equal
expect: "This is expected to be sent back as part of response body: bar12-$expect_foo2-bar32."
msg: check body.data
-
name: post form data
variables:
@@ -58,7 +76,19 @@ teststeps:
Content-Type: "application/x-www-form-urlencoded"
data: "foo1=$foo1&foo2=$foo2&foo3=$foo3"
validate:
- eq: ["status_code", 200]
- eq: ["body.form.foo1", "$expect_foo1"]
- eq: ["body.form.foo2", "bar23"]
- eq: ["body.form.foo3", "bar21"]
- check: status_code
assert: equal
expect: 200
msg: check status_code
- check: body.form.foo1
assert: equal
expect: $expect_foo1
msg: check body.form.foo1
- check: body.form.foo2
assert: equal
expect: bar23
msg: check body.form.foo2
- check: body.form.foo3
assert: equal
expect: bar21
msg: check body.form.foo3

View File

@@ -1,6 +0,0 @@
{
"project_name": "demo-without-plugin",
"project_path": "/Users/debugtalk/MyProjects/HttpRunner-dev/httprunner/examples/demo-without-plugin",
"create_time": "2022-05-25T11:14:53.862348+08:00",
"hrp_version": "v4.1.0-beta"
}

View File

@@ -32,7 +32,7 @@ var scaffoldCmd = &cobra.Command{
pluginType = scaffold.Py // default
}
err := scaffold.CreateScaffold(args[0], pluginType, force)
err := scaffold.CreateScaffold(args[0], pluginType, empty, force)
if err != nil {
log.Error().Err(err).Msg("create scaffold project failed")
os.Exit(1)
@@ -43,6 +43,7 @@ var scaffoldCmd = &cobra.Command{
}
var (
empty bool
ignorePlugin bool
genPythonPlugin bool
genGoPlugin bool
@@ -55,4 +56,5 @@ func init() {
scaffoldCmd.Flags().BoolVar(&genPythonPlugin, "py", true, "generate hashicorp python plugin")
scaffoldCmd.Flags().BoolVar(&genGoPlugin, "go", false, "generate hashicorp go plugin")
scaffoldCmd.Flags().BoolVar(&ignorePlugin, "ignore-plugin", false, "ignore function plugin")
scaffoldCmd.Flags().BoolVar(&empty, "empty", false, "generate empty project")
}

View File

@@ -6,19 +6,37 @@ import (
func TestGenDemoExamples(t *testing.T) {
dir := "../../../examples/demo-with-go-plugin"
err := CreateScaffold(dir, Go, true)
err := CreateScaffold(dir, Go, false, true)
if err != nil {
t.Fatal()
}
dir = "../../../examples/demo-with-py-plugin"
err = CreateScaffold(dir, Py, true)
err = CreateScaffold(dir, Py, false, true)
if err != nil {
t.Fatal()
}
dir = "../../../examples/demo-without-plugin"
err = CreateScaffold(dir, Ignore, true)
err = CreateScaffold(dir, Ignore, false, true)
if err != nil {
t.Fatal()
}
dir = "../../../examples/empty-demo-without-plugin"
err = CreateScaffold(dir, Ignore, true, true)
if err != nil {
t.Fatal()
}
dir = "../../../examples/empty-demo-with-py-plugin"
err = CreateScaffold(dir, Py, true, true)
if err != nil {
t.Fatal()
}
dir = "../../../examples/empty-demo-with-go-plugin"
err = CreateScaffold(dir, Go, true, true)
if err != nil {
t.Fatal()
}

View File

@@ -51,7 +51,7 @@ func CopyFile(templateFile, targetFile string) error {
return nil
}
func CreateScaffold(projectName string, pluginType PluginType, force bool) error {
func CreateScaffold(projectName string, pluginType PluginType, empty bool, force bool) error {
// report event
sdk.SendEvent(sdk.EventTracking{
Category: "Scaffold",
@@ -127,38 +127,49 @@ func CreateScaffold(projectName string, pluginType PluginType, force bool) error
return err
}
// create demo testcases
if pluginType == Ignore {
// create project testcases
if empty {
// create empty project
err := CopyFile("templates/testcases/demo_empty_request.json",
filepath.Join(projectName, "testcases", "requests.json"))
if err != nil {
return err
}
} else if pluginType == Ignore {
// create project without funplugin
err := CopyFile("templates/testcases/demo_without_funplugin.json",
filepath.Join(projectName, "testcases", "requests.json"))
if err != nil {
return err
}
} else {
// create project with funplugin
err = CopyFile("templates/testcases/demo_with_funplugin.json",
filepath.Join(projectName, "testcases", "demo.json"))
if err != nil {
return err
}
err = CopyFile("templates/testcases/demo_requests.json",
filepath.Join(projectName, "testcases", "requests.json"))
if err != nil {
return err
}
err = CopyFile("templates/testcases/demo_requests.yml",
filepath.Join(projectName, "testcases", "requests.yml"))
if err != nil {
return err
}
err = CopyFile("templates/testcases/demo_ref_testcase.yml",
filepath.Join(projectName, "testcases", "ref_testcase.yml"))
if err != nil {
return err
}
}
if pluginType == Ignore {
log.Info().Msg("skip creating function plugin")
return nil
}
err = CopyFile("templates/testcases/demo_with_funplugin.json",
filepath.Join(projectName, "testcases", "demo.json"))
if err != nil {
return err
}
err = CopyFile("templates/testcases/demo_requests.json",
filepath.Join(projectName, "testcases", "requests.json"))
if err != nil {
return err
}
err = CopyFile("templates/testcases/demo_requests.yml",
filepath.Join(projectName, "testcases", "requests.yml"))
if err != nil {
return err
}
err = CopyFile("templates/testcases/demo_ref_testcase.yml",
filepath.Join(projectName, "testcases", "ref_testcase.yml"))
if err != nil {
return err
}
// create debugtalk function plugin
switch pluginType {
case Py:

View File

@@ -0,0 +1,25 @@
{
"config": {
"name": "request methods testcase: empty testcase",
"variables": null,
"verify": false
},
"teststeps": [
{
"name": "",
"variables": null,
"request": {
"method": "GET",
"url": "https://"
},
"validate": [
{
"check": "status_code",
"assert": "equal",
"expect": 200,
"msg": "check status_code"
}
]
}
]
}

View File

@@ -0,0 +1,16 @@
config:
name: "request methods testcase: empty testcase"
variables:
verify: False
teststeps:
- name:
variables:
request:
method: GET
url: "https://"
validate:
- check: status_code
assert: equal
expect: 200
msg: check status_code

View File

@@ -28,6 +28,15 @@ teststeps:
Content-Type: "application/x-www-form-urlencoded"
data: "foo1=$foo1&foo2=$foo3"
validate:
- eq: ["status_code", 200]
- eq: ["body.form.foo1", "bar1"]
- eq: ["body.form.foo2", "bar21"]
- check: status_code
assert: equal
expect: 200
msg: check status_code
- check: body.form.foo1
assert: equal
expect: bar1
msg: check body.form.foo1
- check: body.form.foo2
assert: equal
expect: bar21
msg: check body.form.foo2

View File

@@ -38,28 +38,28 @@
},
"validate": [
{
"eq": [
"status_code",
200
]
"check": "status_code",
"assert": "equal",
"expect": 200,
"msg": "check status_code"
},
{
"eq": [
"body.args.foo1",
"debugtalk"
]
"check": "body.args.foo1",
"assert": "equal",
"expect": "debugtalk",
"msg": "check body.args.foo1"
},
{
"eq": [
"body.args.sum_v",
"3"
]
"check": "body.args.sum_v",
"assert": "equal",
"expect": "3",
"msg": "check body.args.sum_v"
},
{
"eq": [
"body.args.foo2",
"bar21"
]
"check": "body.args.foo2",
"assert": "equal",
"expect": "bar21",
"msg": "check body.args.foo2"
}
]
},
@@ -80,16 +80,16 @@
},
"validate": [
{
"eq": [
"status_code",
200
]
"check": "status_code",
"assert": "equal",
"expect": 200,
"msg": "check status_code"
},
{
"eq": [
"body.data",
"This is expected to be sent back as part of response body: bar12-$expect_foo2-bar32."
]
"check": "body.data",
"assert": "equal",
"expect": "This is expected to be sent back as part of response body: bar12-$expect_foo2-bar32.",
"msg": "check body.data"
}
]
},
@@ -109,28 +109,28 @@
},
"validate": [
{
"eq": [
"status_code",
200
]
"check": "status_code",
"assert": "equal",
"expect": 200,
"msg": "check status_code"
},
{
"eq": [
"body.form.foo1",
"$expect_foo1"
]
"check": "body.form.foo1",
"assert": "equal",
"expect": "$expect_foo1",
"msg": "check body.form.foo1"
},
{
"eq": [
"body.form.foo2",
"bar23"
]
"check": "body.form.foo2",
"assert": "equal",
"expect": "bar23",
"msg": "check body.form.foo2"
},
{
"eq": [
"body.form.foo3",
"bar21"
]
"check": "body.form.foo3",
"assert": "equal",
"expect": "bar21",
"msg": "check body.form.foo3"
}
]
}

View File

@@ -27,10 +27,22 @@ teststeps:
extract:
foo3: "body.args.foo2"
validate:
- eq: ["status_code", 200]
- eq: ["body.args.foo1", "debugtalk"]
- eq: ["body.args.sum_v", "3"]
- eq: ["body.args.foo2", "bar21"]
- check: status_code
assert: equal
expect: 200
msg: check status_code
- check: body.args.foo1
assert: equal
expect: debugtalk
msg: check body.args.foo1
- check: body.args.sum_v
assert: equal
expect: "3"
msg: check body.args.sum_v
- check: body.args.foo2
assert: equal
expect: bar21
msg: check body.args.foo2
-
name: post raw text
variables:
@@ -44,8 +56,14 @@ teststeps:
Content-Type: "text/plain"
data: "This is expected to be sent back as part of response body: $foo1-$foo2-$foo3."
validate:
- eq: ["status_code", 200]
- eq: ["body.data", "This is expected to be sent back as part of response body: bar12-$expect_foo2-bar32."]
- check: status_code
assert: equal
expect: 200
msg: check status_code
- check: body.data
assert: equal
expect: "This is expected to be sent back as part of response body: bar12-$expect_foo2-bar32."
msg: check body.data
-
name: post form data
variables:
@@ -58,7 +76,19 @@ teststeps:
Content-Type: "application/x-www-form-urlencoded"
data: "foo1=$foo1&foo2=$foo2&foo3=$foo3"
validate:
- eq: ["status_code", 200]
- eq: ["body.form.foo1", "$expect_foo1"]
- eq: ["body.form.foo2", "bar23"]
- eq: ["body.form.foo3", "bar21"]
- check: status_code
assert: equal
expect: 200
msg: check status_code
- check: body.form.foo1
assert: equal
expect: $expect_foo1
msg: check body.form.foo1
- check: body.form.foo2
assert: equal
expect: bar23
msg: check body.form.foo2
- check: body.form.foo3
assert: equal
expect: bar21
msg: check body.form.foo3