@@ -32,6 +32,7 @@ type runOption struct {
3232 reporter runner.TestReporter
3333 reportWriter runner.ReportResultWriter
3434 report string
35+ reportIgnore bool
3536}
3637
3738func newDefaultRunOption () * runOption {
@@ -71,14 +72,22 @@ See also https://github.com/LinuxSuRen/api-testing/tree/master/sample`,
7172 flags .Int64VarP (& opt .thread , "thread" , "" , 1 , "Threads of the execution" )
7273 flags .Int32VarP (& opt .qps , "qps" , "" , 5 , "QPS" )
7374 flags .Int32VarP (& opt .burst , "burst" , "" , 5 , "burst" )
74- flags .StringVarP (& opt .report , "report" , "" , "" , "The type of target report" )
75+ flags .StringVarP (& opt .report , "report" , "" , "" , "The type of target report. Supported: markdown, md, discard, std " )
7576 return
7677}
7778
7879func (o * runOption ) preRunE (cmd * cobra.Command , args []string ) (err error ) {
80+ writer := cmd .OutOrStdout ()
81+
7982 switch o .report {
8083 case "markdown" , "md" :
81- o .reportWriter = runner .NewMarkdownResultWriter (cmd .OutOrStdout ())
84+ o .reportWriter = runner .NewMarkdownResultWriter (writer )
85+ case "discard" :
86+ o .reportWriter = runner .NewDiscardResultWriter ()
87+ case "" , "std" :
88+ o .reportWriter = runner .NewResultWriter (writer )
89+ default :
90+ err = fmt .Errorf ("not supported report type: '%s'" , o .report )
8291 }
8392 return
8493}
@@ -97,17 +106,18 @@ func (o *runOption) runE(cmd *cobra.Command, args []string) (err error) {
97106 for i := range files {
98107 item := files [i ]
99108 if err = o .runSuiteWithDuration (item ); err != nil {
100- return
109+ break
101110 }
102111 }
103112 }
104113
105114 // print the report
106- if err == nil {
107- var results []runner.ReportResult
108- if results , err = o .reporter .ExportAllReportResults (); err == nil {
109- err = o .reportWriter .Output (results )
115+ if results , reportErr := o .reporter .ExportAllReportResults (); reportErr == nil {
116+ if reportErr = o .reportWriter .Output (results ); reportErr != nil {
117+ cmd .Println ("failed to Output all reports" , reportErr )
110118 }
119+ } else {
120+ cmd .Println ("failed to export all reports" , reportErr )
111121 }
112122 return
113123}
@@ -205,6 +215,7 @@ func (o *runOption) runSuite(suite string, dataContext map[string]interface{}, c
205215 simpleRunner := runner .NewSimpleTestCaseRunner ()
206216 simpleRunner .WithTestReporter (o .reporter )
207217 if output , err = simpleRunner .RunTestCase (& testCase , dataContext , ctxWithTimeout ); err != nil && ! o .requestIgnoreError {
218+ err = fmt .Errorf ("failed to run '%s', %v" , testCase .Name , err )
208219 return
209220 } else {
210221 err = nil
0 commit comments