fix: unittests

This commit is contained in:
lilong.129
2025-03-05 18:10:41 +08:00
parent e187ba824a
commit a80c8af3f6
9 changed files with 58 additions and 151 deletions

View File

@@ -1 +1 @@
v5.0.0+2503051629 v5.0.0+2503051810

View File

@@ -103,7 +103,9 @@ func (s *StepMobile) Home() *StepMobile {
return s return s
} }
// TapXY taps the point {X,Y}, X & Y is percentage of coordinates // TapXY taps the point {X,Y}
// if X<1 & Y<1, {X,Y} will be considered as percentage
// else, X & Y will be considered as absolute coordinates
func (s *StepMobile) TapXY(x, y float64, opts ...option.ActionOption) *StepMobile { func (s *StepMobile) TapXY(x, y float64, opts ...option.ActionOption) *StepMobile {
action := uixt.MobileAction{ action := uixt.MobileAction{
Method: uixt.ACTION_TapXY, Method: uixt.ACTION_TapXY,

View File

@@ -13,33 +13,20 @@ import (
func TestRun(t *testing.T) { func TestRun(t *testing.T) {
err := hrp.BuildPlugin(tmpl("plugin/debugtalk.go"), "./debugtalk.bin") err := hrp.BuildPlugin(tmpl("plugin/debugtalk.go"), "./debugtalk.bin")
if !assert.Nil(t, err) { assert.Nil(t, err)
t.Fatal()
}
genDebugTalkPyPath := filepath.Join(tmpl("plugin/"), hrp.PluginPySourceGenFile) genDebugTalkPyPath := filepath.Join(tmpl("plugin/"), hrp.PluginPySourceGenFile)
err = hrp.BuildPlugin(tmpl("plugin/debugtalk.py"), genDebugTalkPyPath) err = hrp.BuildPlugin(tmpl("plugin/debugtalk.py"), genDebugTalkPyPath)
if !assert.Nil(t, err) { assert.Nil(t, err)
t.Fatal()
}
contentBytes, err := builtin.LoadFile(genDebugTalkPyPath) contentBytes, err := builtin.LoadFile(genDebugTalkPyPath)
if !assert.Nil(t, err) { assert.Nil(t, err)
t.Fatal()
}
content := string(contentBytes) content := string(contentBytes)
if !assert.Contains(t, content, "import funppy") { assert.Contains(t, content, "import funppy")
t.Fatal() assert.Contains(t, content, "funppy.register")
}
if !assert.Contains(t, content, "funppy.register") {
t.Fatal()
}
reg, _ := regexp.Compile(`funppy\.register`) reg, _ := regexp.Compile(`funppy\.register`)
matchedSlice := reg.FindAllStringSubmatch(content, -1) matchedSlice := reg.FindAllStringSubmatch(content, -1)
if !assert.Len(t, matchedSlice, 10) { assert.Len(t, matchedSlice, 10)
t.Fatal()
}
} }

View File

@@ -12,44 +12,28 @@ func TestLoadTestCases(t *testing.T) {
// load test cases from folder path // load test cases from folder path
tc := hrp.TestCasePath("../examples/demo-with-py-plugin/testcases/") tc := hrp.TestCasePath("../examples/demo-with-py-plugin/testcases/")
testCases, err := hrp.LoadTestCases(&tc) testCases, err := hrp.LoadTestCases(&tc)
if !assert.Nil(t, err) { assert.Nil(t, err)
t.Fatal() assert.Equal(t, 3, len(testCases))
}
if !assert.Equal(t, 4, len(testCases)) {
t.Fatal()
}
// load test cases from folder path, including sub folders // load test cases from folder path, including sub folders
tc = hrp.TestCasePath("../examples/demo-with-py-plugin/") tc = hrp.TestCasePath("../examples/demo-with-py-plugin/")
testCases, err = hrp.LoadTestCases(&tc) testCases, err = hrp.LoadTestCases(&tc)
if !assert.Nil(t, err) { assert.Nil(t, err)
t.Fatal() assert.Equal(t, 3, len(testCases))
}
if !assert.Equal(t, 4, len(testCases)) {
t.Fatal()
}
// load test cases from single file path // load test cases from single file path
tc = hrp.TestCasePath(demoTestCaseWithPluginJSONPath) tc = hrp.TestCasePath(demoTestCaseWithPluginJSONPath)
testCases, err = hrp.LoadTestCases(&tc) testCases, err = hrp.LoadTestCases(&tc)
if !assert.Nil(t, err) { assert.Nil(t, err)
t.Fatal() assert.Equal(t, 1, len(testCases))
}
if !assert.Equal(t, 1, len(testCases)) {
t.Fatal()
}
// load test cases from TestCase instance // load test cases from TestCase instance
testcase := &hrp.TestCase{ testcase := &hrp.TestCase{
Config: hrp.NewConfig("TestCase").SetWeight(3), Config: hrp.NewConfig("TestCase").SetWeight(3),
} }
testCases, err = hrp.LoadTestCases(testcase) testCases, err = hrp.LoadTestCases(testcase)
if !assert.Nil(t, err) { assert.Nil(t, err)
t.Fatal() assert.Equal(t, len(testCases), 1)
}
if !assert.Equal(t, len(testCases), 1) {
t.Fatal()
}
// load test cases from TestCaseJSON // load test cases from TestCaseJSON
testcaseJSON := hrp.TestCaseJSON(` testcaseJSON := hrp.TestCaseJSON(`
@@ -61,36 +45,21 @@ func TestLoadTestCases(t *testing.T) {
] ]
}`) }`)
testCases, err = hrp.LoadTestCases(&testcaseJSON) testCases, err = hrp.LoadTestCases(&testcaseJSON)
if !assert.Nil(t, err) { assert.Nil(t, err)
t.Fatal() assert.Equal(t, len(testCases), 1)
}
if !assert.Equal(t, len(testCases), 1) {
t.Fatal()
}
} }
func TestLoadCase(t *testing.T) { func TestLoadCase(t *testing.T) {
tcJSON := &hrp.TestCaseDef{} tcJSON := &hrp.TestCaseDef{}
tcYAML := &hrp.TestCaseDef{} tcYAML := &hrp.TestCaseDef{}
err := hrp.LoadFileObject(demoTestCaseWithPluginJSONPath, tcJSON) err := hrp.LoadFileObject(demoTestCaseWithPluginJSONPath, tcJSON)
if !assert.NoError(t, err) { assert.Nil(t, err)
t.Fatal()
}
err = hrp.LoadFileObject(demoTestCaseWithPluginYAMLPath, tcYAML)
if !assert.NoError(t, err) {
t.Fatal()
}
if !assert.Equal(t, tcJSON.Config.Name, tcYAML.Config.Name) { err = hrp.LoadFileObject(demoTestCaseWithPluginYAMLPath, tcYAML)
t.Fatal() assert.Nil(t, err)
}
if !assert.Equal(t, tcJSON.Config.BaseURL, tcYAML.Config.BaseURL) { assert.Equal(t, tcJSON.Config.Name, tcYAML.Config.Name)
t.Fatal() assert.Equal(t, tcJSON.Config.BaseURL, tcYAML.Config.BaseURL)
} assert.Equal(t, tcJSON.Steps[1].StepName, tcYAML.Steps[1].StepName)
if !assert.Equal(t, tcJSON.Steps[1].StepName, tcYAML.Steps[1].StepName) { assert.Equal(t, tcJSON.Steps[1].Request, tcJSON.Steps[1].Request)
t.Fatal()
}
if !assert.Equal(t, tcJSON.Steps[1].Request, tcJSON.Steps[1].Request) {
t.Fatal()
}
} }

View File

@@ -79,12 +79,8 @@ func TestLoadParameters(t *testing.T) {
parser := hrp.NewParser() parser := hrp.NewParser()
for _, data := range testData { for _, data := range testData {
value, err := parser.LoadParameters(data.configParameters, variablesMapping) value, err := parser.LoadParameters(data.configParameters, variablesMapping)
if !assert.Nil(t, err) { assert.Nil(t, err)
t.Fatal() assert.Equal(t, data.loadedParameters, value)
}
if !assert.Equal(t, data.loadedParameters, value) {
t.Fatal()
}
} }
} }
@@ -114,9 +110,7 @@ func TestLoadParametersError(t *testing.T) {
parser := hrp.NewParser() parser := hrp.NewParser()
for _, data := range testData { for _, data := range testData {
_, err := parser.LoadParameters(data.configParameters, map[string]interface{}{}) _, err := parser.LoadParameters(data.configParameters, map[string]interface{}{})
if !assert.Error(t, err) { assert.Error(t, err)
t.Fatal()
}
} }
} }
@@ -250,23 +244,15 @@ func TestInitParametersIteratorCount(t *testing.T) {
parser := hrp.NewParser() parser := hrp.NewParser()
for _, data := range testData { for _, data := range testData {
iterator, err := parser.InitParametersIterator(data.cfg) iterator, err := parser.InitParametersIterator(data.cfg)
if !assert.Nil(t, err) { assert.Nil(t, err)
t.Fatal() assert.Equal(t, data.expectLimit, iterator.Limit)
}
if !assert.Equal(t, data.expectLimit, iterator.Limit) {
t.Fatal()
}
for i := 0; i < data.expectLimit; i++ { for i := 0; i < data.expectLimit; i++ {
if !assert.True(t, iterator.HasNext()) { assert.True(t, iterator.HasNext())
t.Fatal()
}
iterator.Next() // consume next parameters iterator.Next() // consume next parameters
} }
// should not have next // should not have next
if !assert.False(t, iterator.HasNext()) { assert.False(t, iterator.HasNext())
t.Fatal()
}
} }
} }
@@ -299,28 +285,18 @@ func TestInitParametersIteratorUnlimitedCount(t *testing.T) {
parser := hrp.NewParser() parser := hrp.NewParser()
for _, data := range testData { for _, data := range testData {
iterator, err := parser.InitParametersIterator(data.cfg) iterator, err := parser.InitParametersIterator(data.cfg)
if !assert.Nil(t, err) { assert.Nil(t, err)
t.Fatal()
}
// set unlimited mode // set unlimited mode
iterator.SetUnlimitedMode() iterator.SetUnlimitedMode()
if !assert.Equal(t, -1, iterator.Limit) { assert.Equal(t, -1, iterator.Limit)
t.Fatal()
}
for i := 0; i < 100; i++ { for i := 0; i < 100; i++ {
if !assert.True(t, iterator.HasNext()) { assert.True(t, iterator.HasNext())
t.Fatal()
}
iterator.Next() // consume next parameters iterator.Next() // consume next parameters
} }
if !assert.Equal(t, 100, iterator.Index) { assert.Equal(t, 100, iterator.Index)
t.Fatal()
}
// should also have next // should also have next
if !assert.True(t, iterator.HasNext()) { assert.True(t, iterator.HasNext())
t.Fatal()
}
} }
} }
@@ -382,22 +358,16 @@ func TestInitParametersIteratorContent(t *testing.T) {
parser := hrp.NewParser() parser := hrp.NewParser()
for _, data := range testData { for _, data := range testData {
iterator, err := parser.InitParametersIterator(data.cfg) iterator, err := parser.InitParametersIterator(data.cfg)
if !assert.Nil(t, err) { assert.Nil(t, err)
t.Fatal()
}
// get expected parameters item // get expected parameters item
for i := 0; i < data.checkIndex; i++ { for i := 0; i < data.checkIndex; i++ {
if !assert.True(t, iterator.HasNext()) { assert.True(t, iterator.HasNext())
t.Fatal()
}
iterator.Next() // consume next parameters iterator.Next() // consume next parameters
} }
parametersItem := iterator.Next() parametersItem := iterator.Next()
if !assert.Equal(t, data.expectParameters, parametersItem) { assert.Equal(t, data.expectParameters, parametersItem)
t.Fatal()
}
} }
} }
@@ -439,9 +409,7 @@ func TestGenCartesianProduct(t *testing.T) {
for _, data := range testData { for _, data := range testData {
parameters := hrp.GenCartesianProduct(data.multiParameters) parameters := hrp.GenCartesianProduct(data.multiParameters)
if !assert.Equal(t, data.expect, parameters) { assert.Equal(t, data.expect, parameters)
t.Fatal()
}
} }
} }
@@ -493,12 +461,8 @@ func TestConvertParameters(t *testing.T) {
for _, data := range testData { for _, data := range testData {
value, err := hrp.ConvertParameters(data.key, data.parametersRawList) value, err := hrp.ConvertParameters(data.key, data.parametersRawList)
if !assert.Nil(t, err) { assert.Nil(t, err)
t.Fatal() assert.Equal(t, data.expect, value)
}
if !assert.Equal(t, data.expect, value) {
t.Fatal()
}
} }
} }
@@ -533,8 +497,6 @@ func TestConvertParametersError(t *testing.T) {
for _, data := range testData { for _, data := range testData {
_, err := hrp.ConvertParameters(data.key, data.parametersRawList) _, err := hrp.ConvertParameters(data.key, data.parametersRawList)
if !assert.Error(t, err) { assert.Error(t, err)
t.Fatal()
}
} }
} }

View File

@@ -11,38 +11,26 @@ import (
func TestLocateFile(t *testing.T) { func TestLocateFile(t *testing.T) {
// specify target file path // specify target file path
_, err := hrp.LocateFile(tmpl("plugin/debugtalk.go"), hrp.PluginGoSourceFile) _, err := hrp.LocateFile(tmpl("plugin/debugtalk.go"), hrp.PluginGoSourceFile)
if !assert.Nil(t, err) { assert.Nil(t, err)
t.Fatal()
}
// specify path with the same dir // specify path with the same dir
_, err = hrp.LocateFile(tmpl("plugin/debugtalk.py"), hrp.PluginGoSourceFile) _, err = hrp.LocateFile(tmpl("plugin/debugtalk.py"), hrp.PluginGoSourceFile)
if !assert.Nil(t, err) { assert.Nil(t, err)
t.Fatal()
}
// specify target file path dir // specify target file path dir
_, err = hrp.LocateFile(tmpl("plugin/"), hrp.PluginGoSourceFile) _, err = hrp.LocateFile(tmpl("plugin/"), hrp.PluginGoSourceFile)
if !assert.Nil(t, err) { assert.Nil(t, err)
t.Fatal()
}
// specify wrong path // specify wrong path
_, err = hrp.LocateFile(".", hrp.PluginGoSourceFile) _, err = hrp.LocateFile(".", hrp.PluginGoSourceFile)
if !assert.Error(t, err) { assert.Error(t, err)
t.Fatal()
}
_, err = hrp.LocateFile("/abc", hrp.PluginGoSourceFile) _, err = hrp.LocateFile("/abc", hrp.PluginGoSourceFile)
if !assert.Error(t, err) { assert.Error(t, err)
t.Fatal()
}
} }
func TestLocatePythonPlugin(t *testing.T) { func TestLocatePythonPlugin(t *testing.T) {
_, err := hrp.LocatePlugin(tmpl("plugin/debugtalk.py")) _, err := hrp.LocatePlugin(tmpl("plugin/debugtalk.py"))
if !assert.Nil(t, err) { assert.Nil(t, err)
t.Fatal()
}
} }
func TestLocateGoPlugin(t *testing.T) { func TestLocateGoPlugin(t *testing.T) {
@@ -50,7 +38,5 @@ func TestLocateGoPlugin(t *testing.T) {
defer removeHashicorpGoPlugin() defer removeHashicorpGoPlugin()
_, err := hrp.LocatePlugin(tmpl("debugtalk.bin")) _, err := hrp.LocatePlugin(tmpl("debugtalk.bin"))
if !assert.Nil(t, err) { assert.Nil(t, err)
t.Fatal()
}
} }

View File

@@ -13,7 +13,7 @@ const (
// tmpl returns template file path // tmpl returns template file path
func tmpl(relativePath string) string { func tmpl(relativePath string) string {
return filepath.Join("internal/scaffold/templates/", relativePath) return filepath.Join("../internal/scaffold/templates/", relativePath)
} }
var ( var (

View File

@@ -314,11 +314,11 @@ func (ad *ADBDriver) TapAbsXY(x, y float64, opts ...option.ActionOption) error {
func (ad *ADBDriver) DoubleTap(x, y float64, opts ...option.ActionOption) error { func (ad *ADBDriver) DoubleTap(x, y float64, opts ...option.ActionOption) error {
var err error var err error
actionOptions := option.NewActionOptions(opts...)
x, y, err = convertToAbsolutePoint(ad, x, y) x, y, err = convertToAbsolutePoint(ad, x, y)
if err != nil { if err != nil {
return err return err
} }
actionOptions := option.NewActionOptions(opts...)
x, y = actionOptions.ApplyOffset(x, y) x, y = actionOptions.ApplyOffset(x, y)
// adb shell input tap x y // adb shell input tap x y

View File

@@ -4,9 +4,10 @@ import (
"encoding/json" "encoding/json"
"net/http" "net/http"
"github.com/pkg/errors"
"github.com/httprunner/httprunner/v5/uixt" "github.com/httprunner/httprunner/v5/uixt"
"github.com/httprunner/httprunner/v5/uixt/option" "github.com/httprunner/httprunner/v5/uixt/option"
"github.com/pkg/errors"
) )
type StubBrowserDriver struct { type StubBrowserDriver struct {