@@ -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