mirror of
https://github.com/httprunner/httprunner.git
synced 2026-05-06 20:32:44 +08:00
fix: unittests
This commit is contained in:
@@ -1 +1 @@
|
||||
v5.0.0+2503051629
|
||||
v5.0.0+2503051810
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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 (
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user