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
}
// 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 {
action := uixt.MobileAction{
Method: uixt.ACTION_TapXY,

View File

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

View File

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

View File

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

View File

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

View File

@@ -13,7 +13,7 @@ const (
// tmpl returns template file path
func tmpl(relativePath string) string {
return filepath.Join("internal/scaffold/templates/", relativePath)
return filepath.Join("../internal/scaffold/templates/", relativePath)
}
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 {
var err error
actionOptions := option.NewActionOptions(opts...)
x, y, err = convertToAbsolutePoint(ad, x, y)
if err != nil {
return err
}
actionOptions := option.NewActionOptions(opts...)
x, y = actionOptions.ApplyOffset(x, y)
// adb shell input tap x y

View File

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