From efc088f87aba15f313558cc4a19b9f6e937f93d1 Mon Sep 17 00:00:00 2001 From: debugtalk Date: Sun, 10 Oct 2021 14:49:38 +0800 Subject: [PATCH] feat: add run subcommand --- cmd/root.go | 13 ++++++------- cmd/run.go | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 7 deletions(-) create mode 100644 cmd/run.go diff --git a/cmd/root.go b/cmd/root.go index 7d452891..f83813f7 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -12,14 +12,13 @@ import ( // rootCmd represents the base command when called without any subcommands var rootCmd = &cobra.Command{ Use: "httpboomer", - Short: "httpboomer = httprunner + boomer", - Long: `HttpBoomer is a golang implementation of HttpRunner. -Ideally, HttpBoomer will be fully compatible with HttpRunner, including testcase format and usage. -What's more, HttpBoomer will integrate Boomer natively to be a better load generator for locust.`, + Short: "One-stop solution for HTTP(S) testing.", + Long: `HttpBoomer is the next generation for HttpRunner. Enjoy! ✨ 🚀 ✨ + +License: Apache-2.0 +Github: https://github.com/httprunner/httpboomer +Copyright 2021 debugtalk`, Version: httpboomer.VERSION, - // Uncomment the following line if your bare application - // has an action associated with it: - // Run: func(cmd *cobra.Command, args []string) {}, } // Execute adds all child commands to the root command and sets flags appropriately. diff --git a/cmd/run.go b/cmd/run.go new file mode 100644 index 00000000..c20e4f3d --- /dev/null +++ b/cmd/run.go @@ -0,0 +1,35 @@ +package cmd + +import ( + "testing" + + "github.com/spf13/cobra" + + "github.com/httprunner/httpboomer" +) + +// runCmd represents the run command +var runCmd = &cobra.Command{ + Use: "run path...", + Short: "run API test", + Long: `run yaml/json testcase files`, + Example: ` $ httpboomer run demo.json # run specified json testcase file + $ httpboomer run demo.yaml # run specified yaml testcase file + $ httpboomer run examples/ # run testcases in specified folder`, + RunE: func(cmd *cobra.Command, args []string) error { + + // f, _ := cmd.Flags().GetBool("gen-html-report") + // fmt.Println(f) + + var paths []httpboomer.ITestCase + for _, arg := range args { + paths = append(paths, &httpboomer.TestCasePath{Path: arg}) + } + return httpboomer.Run(&testing.T{}, paths...) + }, +} + +func init() { + rootCmd.AddCommand(runCmd) + runCmd.Flags().BoolP("gen-html-report", "r", false, "Generate HTML report") +}