Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
易企天创
zentaoatf
提交
7312e8ac
Z
zentaoatf
项目概览
易企天创
/
zentaoatf
9 个月 前同步成功
通知
11
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
3
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Z
zentaoatf
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
3
Issue
3
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
7312e8ac
编写于
8月 23, 2022
作者:
雨
雨爱无痕
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
* Add run test
上级
a01d6fc2
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
321 addition
and
3 deletion
+321
-3
.gitignore
.gitignore
+1
-0
test/demo/php/2_webpage_extract.php
test/demo/php/2_webpage_extract.php
+1
-1
test/demo/php/3_http_interface_call.php
test/demo/php/3_http_interface_call.php
+17
-0
test/ui_run_test.go
test/ui_run_test.go
+302
-0
test/ui_site_test.go
test/ui_site_test.go
+0
-2
未找到文件。
.gitignore
浏览文件 @
7312e8ac
...
...
@@ -45,3 +45,4 @@ logs/
/test/demo/ci_test*
test/demo/php/conf
test/demo/php/log
test/demo/php/product1
test/demo/php/2_webpage_extract.php
浏览文件 @
7312e8ac
...
...
@@ -8,7 +8,7 @@ pid=1
1. Load web page from url http://xxx
2. Retrieve img element zt-logo.png in html
3. Check img exist >> `.*zt-logo.png
1
`
3. Check img exist >> `.*zt-logo.png`
*/
...
...
test/demo/php/3_http_interface_call.php
0 → 100644
浏览文件 @
7312e8ac
#!/usr/bin/env php
<?php
/**
title=check remote interface response
cid=0
pid=0
1. Send a request to interface http://xxx
2. Retrieve sessionID field from response json
3. Check its format >> `^[a-z0-9]{26}`
*/
$resp
=
file_get_contents
(
'http://max.demo.zentao.net/pms/?mode=getconfig'
);
$json
=
json_decode
(
$resp
);
echo
$json
->
sessionID
.
"
\n
"
;
test/ui_run_test.go
0 → 100644
浏览文件 @
7312e8ac
package
main
import
(
"strings"
"testing"
playwright
"github.com/playwright-community/playwright-go"
)
var
runBrowser
playwright
.
Browser
func
RunScript
(
t
*
testing
.
T
)
{
pw
,
err
:=
playwright
.
Run
()
if
err
!=
nil
{
t
.
Error
(
err
)
t
.
FailNow
()
}
headless
:=
false
var
slowMo
float64
=
100
workspaceBrowser
,
err
:=
pw
.
Chromium
.
Launch
(
playwright
.
BrowserTypeLaunchOptions
{
Headless
:
&
headless
,
SlowMo
:
&
slowMo
})
if
err
!=
nil
{
t
.
Errorf
(
"Fail to launch the web workspaceBrowser: %v"
,
err
)
t
.
FailNow
()
}
page
,
err
:=
workspaceBrowser
.
NewPage
()
if
err
!=
nil
{
t
.
Errorf
(
"Create the new page fail: %v"
,
err
)
t
.
FailNow
()
}
if
_
,
err
=
page
.
Goto
(
"http://127.0.0.1:8000/"
,
playwright
.
PageGotoOptions
{
WaitUntil
:
playwright
.
WaitUntilStateDomcontentloaded
,
});
err
!=
nil
{
t
.
Errorf
(
"The specific URL is missing: %v"
,
err
)
t
.
FailNow
()
}
_
,
err
=
page
.
WaitForSelector
(
".tree-node"
)
if
err
!=
nil
{
t
.
Errorf
(
"Wait tree-node fail: %v"
,
err
)
t
.
FailNow
()
}
Locator
,
err
:=
page
.
Locator
(
".tree-node"
,
playwright
.
PageLocatorOptions
{
HasText
:
"单元测试工作目录"
})
c
,
err
:=
Locator
.
Count
()
if
err
!=
nil
||
c
==
0
{
t
.
Errorf
(
"Find workspace fail: %v"
,
err
)
t
.
FailNow
()
}
err
=
Locator
.
Click
()
if
err
!=
nil
{
t
.
Errorf
(
"Click node fail: %v"
,
err
)
t
.
FailNow
()
}
scriptLocator
,
err
:=
Locator
.
Locator
(
"text=1_string_match.php"
)
if
err
!=
nil
{
t
.
Errorf
(
"Find 1_string_match.php fail: %v"
,
err
)
t
.
FailNow
()
}
err
=
scriptLocator
.
Click
()
if
err
!=
nil
{
t
.
Errorf
(
"Click script fail: %v"
,
err
)
t
.
FailNow
()
}
err
=
page
.
Click
(
".tabs-nav-toolbar>>[title=
\"
Run
\"
]"
)
if
err
!=
nil
{
t
.
Errorf
(
"Click run fail: %v"
,
err
)
t
.
FailNow
()
}
_
,
err
=
page
.
WaitForSelector
(
"#log-list>>.msg-span>>:has-text('执行1个用例,耗时')"
)
if
err
!=
nil
{
t
.
Errorf
(
"Wait exec result fail: %v"
,
err
)
t
.
FailNow
()
}
element
,
err
:=
page
.
QuerySelector
(
"#log-list>>.msg-span>>:has-text('执行1个用例,耗时')"
)
innerText
,
err
:=
element
.
InnerText
()
if
err
!=
nil
{
t
.
Errorf
(
"Find result fail: %v"
,
err
)
t
.
FailNow
()
}
if
!
strings
.
Contains
(
innerText
,
"1(100.0%) 失败"
)
{
t
.
Errorf
(
"Exec 1_string_match.php fail: %v"
,
err
)
t
.
FailNow
()
}
if
err
=
workspaceBrowser
.
Close
();
err
!=
nil
{
t
.
Errorf
(
"The workspaceBrowser cannot be closed: %v"
,
err
)
t
.
FailNow
()
}
if
err
=
pw
.
Stop
();
err
!=
nil
{
t
.
Errorf
(
"The playwright cannot be stopped: %v"
,
err
)
t
.
FailNow
()
}
}
func
RunSelectedScripts
(
t
*
testing
.
T
)
{
pw
,
err
:=
playwright
.
Run
()
if
err
!=
nil
{
t
.
Error
(
err
)
t
.
FailNow
()
}
headless
:=
false
var
slowMo
float64
=
100
workspaceBrowser
,
err
:=
pw
.
Chromium
.
Launch
(
playwright
.
BrowserTypeLaunchOptions
{
Headless
:
&
headless
,
SlowMo
:
&
slowMo
})
if
err
!=
nil
{
t
.
Errorf
(
"Fail to launch the web workspaceBrowser: %v"
,
err
)
t
.
FailNow
()
}
page
,
err
:=
workspaceBrowser
.
NewPage
()
if
err
!=
nil
{
t
.
Errorf
(
"Create the new page fail: %v"
,
err
)
t
.
FailNow
()
}
if
_
,
err
=
page
.
Goto
(
"http://127.0.0.1:8000/"
,
playwright
.
PageGotoOptions
{
WaitUntil
:
playwright
.
WaitUntilStateDomcontentloaded
,
});
err
!=
nil
{
t
.
Errorf
(
"The specific URL is missing: %v"
,
err
)
t
.
FailNow
()
}
_
,
err
=
page
.
WaitForSelector
(
".tree-node"
)
if
err
!=
nil
{
t
.
Errorf
(
"Wait tree-node fail: %v"
,
err
)
t
.
FailNow
()
}
Locator
,
err
:=
page
.
Locator
(
".tree-node"
,
playwright
.
PageLocatorOptions
{
HasText
:
"单元测试工作目录"
})
c
,
err
:=
Locator
.
Count
()
if
err
!=
nil
||
c
==
0
{
t
.
Errorf
(
"Find workspace fail: %v"
,
err
)
t
.
FailNow
()
}
err
=
Locator
.
Click
()
if
err
!=
nil
{
t
.
Errorf
(
"Click node fail: %v"
,
err
)
t
.
FailNow
()
}
err
=
page
.
Click
(
`[title="批量选择"]`
)
if
err
!=
nil
{
t
.
Errorf
(
"The Click select btn fail: %v"
,
err
)
t
.
FailNow
()
}
scriptLocator
,
err
:=
Locator
.
Locator
(
".tree-node-item:has-text('1_string_match.php')"
)
if
err
!=
nil
{
t
.
Errorf
(
"Find 1_string_match.php fail: %v"
,
err
)
t
.
FailNow
()
}
scriptLocator
,
err
=
scriptLocator
.
Locator
(
".tree-node-check"
)
if
err
!=
nil
{
t
.
Errorf
(
"Find 1_string_match.php checkbox fail: %v"
,
err
)
t
.
FailNow
()
}
err
=
scriptLocator
.
Click
()
if
err
!=
nil
{
t
.
Errorf
(
"Click 1_string_match.php checkbox fail: %v"
,
err
)
t
.
FailNow
()
}
scriptLocator
,
err
=
Locator
.
Locator
(
".tree-node-item:has-text('2_webpage_extract.php')"
)
if
err
!=
nil
{
t
.
Errorf
(
"Find 2_webpage_extract.php fail: %v"
,
err
)
t
.
FailNow
()
}
scriptLocator
,
err
=
scriptLocator
.
Locator
(
".tree-node-check"
)
if
err
!=
nil
{
t
.
Errorf
(
"Find 2_webpage_extract.php checkbox fail: %v"
,
err
)
t
.
FailNow
()
}
err
=
scriptLocator
.
Click
()
if
err
!=
nil
{
t
.
Errorf
(
"Click 2_webpage_extract.php checkbox fail: %v"
,
err
)
t
.
FailNow
()
}
err
=
page
.
Click
(
".run-selected"
)
if
err
!=
nil
{
t
.
Errorf
(
"Click run fail: %v"
,
err
)
t
.
FailNow
()
}
_
,
err
=
page
.
WaitForSelector
(
"#log-list>>.msg-span>>:has-text('执行2个用例,耗时')"
)
if
err
!=
nil
{
t
.
Errorf
(
"Wait exec result fail: %v"
,
err
)
t
.
FailNow
()
}
element
,
err
:=
page
.
QuerySelector
(
"#log-list>>.msg-span>>:has-text('执行2个用例,耗时')"
)
innerText
,
err
:=
element
.
InnerText
()
if
err
!=
nil
{
t
.
Errorf
(
"Find result fail: %v"
,
err
)
t
.
FailNow
()
}
if
!
strings
.
Contains
(
innerText
,
"1(50.0%) 通过,1(50.0%) 失败"
)
{
t
.
Errorf
(
"Exec 1_string_match.php,2_webpage_extract.php fail: %v"
,
err
)
t
.
FailNow
()
}
if
err
=
workspaceBrowser
.
Close
();
err
!=
nil
{
t
.
Errorf
(
"The workspaceBrowser cannot be closed: %v"
,
err
)
t
.
FailNow
()
}
if
err
=
pw
.
Stop
();
err
!=
nil
{
t
.
Errorf
(
"The playwright cannot be stopped: %v"
,
err
)
t
.
FailNow
()
}
}
func
RunOpenedAndLast
(
t
*
testing
.
T
)
{
pw
,
err
:=
playwright
.
Run
()
if
err
!=
nil
{
t
.
Error
(
err
)
t
.
FailNow
()
}
headless
:=
false
var
slowMo
float64
=
100
workspaceBrowser
,
err
:=
pw
.
Chromium
.
Launch
(
playwright
.
BrowserTypeLaunchOptions
{
Headless
:
&
headless
,
SlowMo
:
&
slowMo
})
if
err
!=
nil
{
t
.
Errorf
(
"Fail to launch the web workspaceBrowser: %v"
,
err
)
t
.
FailNow
()
}
page
,
err
:=
workspaceBrowser
.
NewPage
()
if
err
!=
nil
{
t
.
Errorf
(
"Create the new page fail: %v"
,
err
)
t
.
FailNow
()
}
if
_
,
err
=
page
.
Goto
(
"http://127.0.0.1:8000/"
,
playwright
.
PageGotoOptions
{
WaitUntil
:
playwright
.
WaitUntilStateDomcontentloaded
,
});
err
!=
nil
{
t
.
Errorf
(
"The specific URL is missing: %v"
,
err
)
t
.
FailNow
()
}
_
,
err
=
page
.
WaitForSelector
(
".tree-node"
)
if
err
!=
nil
{
t
.
Errorf
(
"Wait tree-node fail: %v"
,
err
)
t
.
FailNow
()
}
Locator
,
err
:=
page
.
Locator
(
"#siteMenuToggle"
)
if
err
!=
nil
{
t
.
Errorf
(
"The siteMenuToggle is missing: %v"
,
err
)
t
.
FailNow
()
}
err
=
Locator
.
Click
()
if
err
!=
nil
{
t
.
Errorf
(
"The Click is fail: %v"
,
err
)
t
.
FailNow
()
}
_
,
err
=
page
.
WaitForSelector
(
"#navbar .list-item"
)
if
err
!=
nil
{
t
.
Errorf
(
"Wait for site list nav fail: %v"
,
err
)
t
.
FailNow
()
}
err
=
page
.
Click
(
".list-item-title>>text=单元测试站点"
)
if
err
!=
nil
{
t
.
Errorf
(
"The Click site nav fail: %v"
,
err
)
t
.
FailNow
()
}
err
=
page
.
Click
(
".tree-node-item:has-text('1_string_match.php')"
)
if
err
!=
nil
{
t
.
Errorf
(
"Click 1_string_match.php fail: %v"
,
err
)
t
.
FailNow
()
}
err
=
page
.
Click
(
".tree-node-item:has-text('2_webpage_extract.php')"
)
if
err
!=
nil
{
t
.
Errorf
(
"Click 2_webpage_extract.php fail: %v"
,
err
)
t
.
FailNow
()
}
err
=
page
.
Click
(
"#batchRunMenuToggle"
)
if
err
!=
nil
{
t
.
Errorf
(
"Click batchRunMenuToggle fail: %v"
,
err
)
t
.
FailNow
()
}
err
=
page
.
Click
(
"list-item-content>>:has-text('执行上次')"
)
if
err
!=
nil
{
t
.
Errorf
(
"The Click Run last time fail: %v"
,
err
)
t
.
FailNow
()
}
_
,
err
=
page
.
WaitForSelector
(
"#log-list>>.msg-span>>:has-text('执行2个用例,耗时')"
)
if
err
!=
nil
{
t
.
Errorf
(
"Wait exec result fail: %v"
,
err
)
t
.
FailNow
()
}
element
,
err
:=
page
.
QuerySelector
(
"#log-list>>.msg-span>>:has-text('执行2个用例,耗时')"
)
innerText
,
err
:=
element
.
InnerText
()
if
err
!=
nil
{
t
.
Errorf
(
"Find result fail: %v"
,
err
)
t
.
FailNow
()
}
if
!
strings
.
Contains
(
innerText
,
"1(50.0%) 通过,1(50.0%) 失败"
)
{
t
.
Errorf
(
"Exec 1_string_match.php,2_webpage_extract.php fail: %v"
,
err
)
t
.
FailNow
()
}
if
err
=
workspaceBrowser
.
Close
();
err
!=
nil
{
t
.
Errorf
(
"The workspaceBrowser cannot be closed: %v"
,
err
)
t
.
FailNow
()
}
if
err
=
pw
.
Stop
();
err
!=
nil
{
t
.
Errorf
(
"The playwright cannot be stopped: %v"
,
err
)
t
.
FailNow
()
}
}
func
TestUiRun
(
t
*
testing
.
T
)
{
// t.Run("RunScript", RunScript)
// t.Run("RunSelectedScripts", RunSelectedScripts)
t
.
Run
(
"RunOpenedAndLast"
,
RunOpenedAndLast
)
}
test/ui_site_test.go
浏览文件 @
7312e8ac
...
...
@@ -181,7 +181,6 @@ func EditSite(t *testing.T) {
t
.
FailNow
()
}
// page.WaitForSelector(".tree")
Locator
,
err
:=
page
.
Locator
(
"#siteMenuToggle"
)
if
err
!=
nil
{
t
.
Errorf
(
"The siteMenuToggle is missing: %v"
,
err
)
...
...
@@ -204,7 +203,6 @@ func EditSite(t *testing.T) {
if
err
!=
nil
{
t
.
Errorf
(
"The Click site nav fail: %v"
,
err
)
t
.
FailNow
()
}
// page.WaitForSelector(".modal-title")
Locator
,
err
=
page
.
Locator
(
".list-item"
,
playwright
.
PageLocatorOptions
{
HasText
:
"单元测试站点"
})
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录