mirror of
https://github.com/httprunner/httprunner.git
synced 2026-06-02 14:29:44 +08:00
fix: check WDA summary logs
This commit is contained in:
@@ -124,6 +124,7 @@ func WithThreshold(threshold float64) CVOption {
|
||||
}
|
||||
|
||||
type DriverExt struct {
|
||||
Device Device
|
||||
Driver WebDriver
|
||||
windowSize Size
|
||||
frame *bytes.Buffer
|
||||
|
||||
@@ -96,6 +96,7 @@ func InitWDAClient(device *IOSDevice) (*DriverExt, error) {
|
||||
}
|
||||
}
|
||||
|
||||
driverExt.Device = iosDevice
|
||||
return driverExt, nil
|
||||
}
|
||||
|
||||
|
||||
@@ -210,10 +210,10 @@ func (r *HRPRunner) Run(testcases ...ITestCase) error {
|
||||
}
|
||||
|
||||
for it := sessionRunner.parametersIterator; it.HasNext(); {
|
||||
err = sessionRunner.Start(it.Next())
|
||||
caseSummary := sessionRunner.GetSummary()
|
||||
err1 := sessionRunner.Start(it.Next())
|
||||
caseSummary, err2 := sessionRunner.GetSummary()
|
||||
s.appendCaseSummary(caseSummary)
|
||||
if err != nil {
|
||||
if err1 != nil || err2 != nil {
|
||||
log.Error().Err(err).Msg("[Run] run testcase failed")
|
||||
runErr = err
|
||||
break
|
||||
|
||||
@@ -7,8 +7,6 @@ import (
|
||||
"github.com/gorilla/websocket"
|
||||
"github.com/pkg/errors"
|
||||
"github.com/rs/zerolog/log"
|
||||
|
||||
"github.com/httprunner/httprunner/v4/hrp/internal/json"
|
||||
)
|
||||
|
||||
// SessionRunner is used to run testcase and its steps.
|
||||
@@ -151,7 +149,7 @@ func (r *SessionRunner) updateSessionVariables(parameters map[string]interface{}
|
||||
}
|
||||
}
|
||||
|
||||
func (r *SessionRunner) GetSummary() *TestCaseSummary {
|
||||
func (r *SessionRunner) GetSummary() (*TestCaseSummary, error) {
|
||||
caseSummary := r.summary
|
||||
caseSummary.Name = r.parsedConfig.Name
|
||||
caseSummary.Time.StartAt = r.startTime
|
||||
@@ -163,19 +161,16 @@ func (r *SessionRunner) GetSummary() *TestCaseSummary {
|
||||
caseSummary.InOut.ExportVars = exportVars
|
||||
caseSummary.InOut.ConfigVars = r.parsedConfig.Variables
|
||||
|
||||
// add WDA/UIA logs to summary
|
||||
logs := make(map[string]string)
|
||||
for udid, client := range r.hrpRunner.uiClients {
|
||||
log, err := client.GetLogs()
|
||||
if err != nil {
|
||||
logs[udid] = err.Error()
|
||||
} else {
|
||||
logs[udid] = log
|
||||
return nil, err
|
||||
}
|
||||
|
||||
logs[udid] = log
|
||||
}
|
||||
logsStr, _ := json.Marshal(logs)
|
||||
caseSummary.Logs = string(logsStr)
|
||||
caseSummary.Logs = logs
|
||||
|
||||
// caseSummary.Log
|
||||
return caseSummary
|
||||
return caseSummary, nil
|
||||
}
|
||||
|
||||
@@ -499,7 +499,7 @@ func (r *HRPRunner) initUIClient(device uixt.Device) (client *uixt.DriverExt, er
|
||||
if r.uiClients == nil {
|
||||
r.uiClients = make(map[string]*uixt.DriverExt)
|
||||
}
|
||||
r.uiClients[uuid] = client
|
||||
r.uiClients[client.Device.UUID()] = client
|
||||
|
||||
return client, nil
|
||||
}
|
||||
|
||||
@@ -103,7 +103,7 @@ func TestRunRequestStatOn(t *testing.T) {
|
||||
if err := sessionRunner.Start(nil); err != nil {
|
||||
t.Fatal()
|
||||
}
|
||||
summary := sessionRunner.GetSummary()
|
||||
summary, _ := sessionRunner.GetSummary()
|
||||
|
||||
stat := summary.Records[0].HttpStat
|
||||
if !assert.GreaterOrEqual(t, stat["DNSLookup"], int64(0)) {
|
||||
|
||||
@@ -5,6 +5,7 @@ import (
|
||||
"time"
|
||||
|
||||
"github.com/jinzhu/copier"
|
||||
"github.com/pkg/errors"
|
||||
"github.com/rs/zerolog/log"
|
||||
)
|
||||
|
||||
@@ -89,11 +90,17 @@ func (s *StepTestCaseWithOptionalArgs) Run(r *SessionRunner) (stepResult *StepRe
|
||||
start := time.Now()
|
||||
// run referenced testcase with step variables
|
||||
err = sessionRunner.Start(stepVariables)
|
||||
if err == nil {
|
||||
stepResult.Success = true
|
||||
}
|
||||
stepResult.Elapsed = time.Since(start).Milliseconds()
|
||||
summary := sessionRunner.GetSummary()
|
||||
|
||||
summary, err2 := sessionRunner.GetSummary()
|
||||
if err2 != nil {
|
||||
log.Error().Err(err).Msg("get summary failed")
|
||||
if err != nil {
|
||||
err = errors.Wrap(err, err2.Error())
|
||||
} else {
|
||||
err = err2
|
||||
}
|
||||
}
|
||||
// update step names
|
||||
for _, record := range summary.Records {
|
||||
record.Name = fmt.Sprintf("%s - %s", stepResult.Name, record.Name)
|
||||
@@ -108,5 +115,8 @@ func (s *StepTestCaseWithOptionalArgs) Run(r *SessionRunner) (stepResult *StepRe
|
||||
r.summary.Stat.Successes += summary.Stat.Successes
|
||||
r.summary.Stat.Failures += summary.Stat.Failures
|
||||
|
||||
if err == nil {
|
||||
stepResult.Success = true
|
||||
}
|
||||
return stepResult, err
|
||||
}
|
||||
|
||||
@@ -151,7 +151,7 @@ type TestCaseSummary struct {
|
||||
Stat *TestStepStat `json:"stat" yaml:"stat"`
|
||||
Time *TestCaseTime `json:"time" yaml:"time"`
|
||||
InOut *TestCaseInOut `json:"in_out" yaml:"in_out"`
|
||||
Logs string `json:"logs,omitempty" yaml:"logs,omitempty"` // TODO
|
||||
Logs interface{} `json:"logs,omitempty" yaml:"logs,omitempty"`
|
||||
Records []*StepResult `json:"records" yaml:"records"`
|
||||
RootDir string `json:"root_dir" yaml:"root_dir"`
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user