提交 f85103c1 编写于 作者: aaronchen2k2k's avatar aaronchen2k2k

submit test results to zendao server

上级 2ec6d995
package model
import (
"github.com/easysoft/zentaoatf/src/utils/const"
)
type Product struct {
Id int
Code string
......@@ -66,7 +62,7 @@ type CaseLog struct {
Id int
IdInTask int
Path string
Status constant.ResultStatus
Status string
Steps []StepLog
}
......@@ -83,3 +79,11 @@ type CheckPointLog struct {
Actual string
Status bool
}
type CaseResult struct {
Case string
Version string
Steps map[string]string
Reals map[string]string
}
......@@ -47,11 +47,47 @@ func Get(url string, params map[string]string) (string, bool) {
return string(bodyStr), true
} else { // 嵌套结构
dataStr := bodyJson.Data
return dataStr, status == "success"
return dataStr, status == "pass"
}
}
func Post(url string, params map[string]string) (string, bool) {
func PostJson(url string, params map[string]interface{}) (string, bool) {
client := &http.Client{}
bytesData, _ := json.Marshal(params)
req, err := http.NewRequest("POST", url, strings.NewReader(string(bytesData)))
if err != nil {
return "", false
}
//req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
req.Header.Set("Content-Type", "application/json;charset=UTF-8")
req.Header.Set("cookie", vari.SessionVar+"="+vari.SessionId)
resp, err := client.Do(req)
if err != nil {
return "", false
}
bodyStr, _ := ioutil.ReadAll(resp.Body)
println(string(bodyStr))
var bodyJson model.ZentaoResponse
json.Unmarshal(bodyStr, &bodyJson)
defer resp.Body.Close()
status := bodyJson.Status
if status == "" { // 非嵌套结构
return string(bodyStr), true
} else { // 嵌套结构
dataStr := bodyJson.Data
return dataStr, status == "pass"
}
}
func PostStr(url string, params map[string]string) (string, bool) {
client := &http.Client{}
paramStr := ""
......@@ -90,6 +126,6 @@ func Post(url string, params map[string]string) (string, bool) {
return string(bodyStr), true
} else { // 嵌套结构
dataStr := bodyJson.Data
return dataStr, status == "success"
return dataStr, status == "pass"
}
}
......@@ -37,9 +37,9 @@ func LoadTestResults(assert string) []string {
return ret
}
func GetTestResult(assert string, date string) []string {
func GetTestResultForDisplay(assert string, date string) []string {
mode, name := GetRunModeAndName(assert)
resultPath := vari.Prefer.WorkDir + constant.LogDir + logFolder(mode, name, date) + string(os.PathSeparator) + "result.txt"
resultPath := vari.Prefer.WorkDir + constant.LogDir + LogFolder(mode, name, date) + string(os.PathSeparator) + "result.txt"
arr := make([]string, 0)
content := fileUtils.ReadFile(resultPath)
......@@ -62,7 +62,7 @@ func GetTestResult(assert string, date string) []string {
func GetCheckpointsResult(assert string, date string, caseLine string) string {
mode, name := GetRunModeAndName(assert)
resultPath := vari.Prefer.WorkDir + constant.LogDir + logFolder(mode, name, date) + string(os.PathSeparator) + "result.txt"
resultPath := vari.Prefer.WorkDir + constant.LogDir + LogFolder(mode, name, date) + string(os.PathSeparator) + "result.txt"
content := fileUtils.ReadFile(resultPath)
......@@ -101,9 +101,9 @@ func GetLogFileByCase(assert string, date string, file string) string {
ext := path.Ext(file)
logName := strings.Replace(commonUtils.Base(file), ext, ".log", -1)
return vari.Prefer.WorkDir + constant.LogDir + logFolder(mode, name, date) + string(os.PathSeparator) + logName
return vari.Prefer.WorkDir + constant.LogDir + LogFolder(mode, name, date) + string(os.PathSeparator) + logName
}
func logFolder(mode string, name string, date string) string {
func LogFolder(mode string, name string, date string) string {
return fmt.Sprintf("%s-%s-%s", mode, name, date)
}
......@@ -34,10 +34,10 @@ func ValidateTestCase(scriptFile string, langType string,
caseId, caseIdInTask := zentaoUtils.GetCaseIds(scriptFile)
stepLogs := make([]model.StepLog, 0)
caseResult := constant.PASS
caseResult := constant.PASS.String()
if skip {
caseResult = constant.SKIP
caseResult = constant.SKIP.String()
} else {
indx := 0
for _, step := range checkpointStepArr { // iterate by checkpoints
......@@ -62,18 +62,18 @@ func ValidateTestCase(scriptFile string, langType string,
stepLog := model.StepLog{Id: stepId, Name: step, Status: stepResult, CheckPoints: checkpointLogs}
stepLogs = append(stepLogs, stepLog)
if !stepResult {
caseResult = constant.FAIL
caseResult = constant.FAIL.String()
}
indx++
}
}
if caseResult == constant.FAIL {
if caseResult == constant.FAIL.String() {
report.Fail = report.Fail + 1
} else if caseResult == constant.PASS {
} else if caseResult == constant.PASS.String() {
report.Pass = report.Pass + 1
} else if caseResult == constant.SKIP {
} else if caseResult == constant.SKIP.String() {
report.Skip = report.Skip + 1
}
report.Total = report.Total + 1
......
package testingService
import (
"encoding/json"
"fmt"
"github.com/easysoft/zentaoatf/src/model"
"github.com/easysoft/zentaoatf/src/utils/common"
......@@ -32,7 +33,7 @@ func Print(report model.TestReport, workDir string) {
for _, cs := range report.Cases {
str := "\n %s %d-%d: %s"
status := cs.Status.String()
status := cs.Status
statusColor := logUtils.ColoredStatus(status)
logs = append(logs, fmt.Sprintf(str, status, cs.Id, cs.IdInTask, cs.Path))
......@@ -78,4 +79,7 @@ func Print(report model.TestReport, workDir string) {
}
fileUtils.WriteFile(workDir+constant.LogDir+vari.RunDir+"result.txt", strings.Join(logs, "\n"))
json, _ := json.Marshal(report)
fileUtils.WriteFile(workDir+constant.LogDir+vari.RunDir+"result.json", string(json))
}
package testingService
import (
httpClient "github.com/easysoft/zentaoatf/src/service/client"
"github.com/easysoft/zentaoatf/src/utils/common"
config2 "github.com/easysoft/zentaoatf/src/utils/config"
constant "github.com/easysoft/zentaoatf/src/utils/const"
print2 "github.com/easysoft/zentaoatf/src/utils/print"
)
func GetZentaoSettings() {
......@@ -14,14 +10,14 @@ func GetZentaoSettings() {
entityType := config.EntityType
entityVal := config.EntityVal
requestObj := make(map[string]string)
requestObj := make(map[string]interface{})
requestObj["entityType"] = entityType
requestObj["entityVal"] = entityVal
url := config.Url
url = commonUtils.UpdateUrl(url)
_, _ = httpClient.Post(url+constant.UrlZentaoSettings, requestObj)
print2.PrintToCmd(url + constant.UrlZentaoSettings)
//url := config.Url
//url = commonUtils.UpdateUrl(url)
//_, _ = httpClient.PostJson(url+constant.UrlZentaoSettings, requestObj)
//print2.PrintToCmd(url + constant.UrlZentaoSettings)
//if err == nil {
// if pass {
......
......@@ -2,56 +2,76 @@ package testingService
import (
"encoding/json"
"fmt"
"github.com/easysoft/zentaoatf/src/model"
httpClient "github.com/easysoft/zentaoatf/src/service/client"
"github.com/easysoft/zentaoatf/src/utils/common"
config2 "github.com/easysoft/zentaoatf/src/utils/config"
scriptService "github.com/easysoft/zentaoatf/src/service/script"
configUtils "github.com/easysoft/zentaoatf/src/utils/config"
constant "github.com/easysoft/zentaoatf/src/utils/const"
print2 "github.com/easysoft/zentaoatf/src/utils/print"
"path"
fileUtils "github.com/easysoft/zentaoatf/src/utils/file"
printUtils "github.com/easysoft/zentaoatf/src/utils/print"
"github.com/easysoft/zentaoatf/src/utils/vari"
"os"
"strconv"
"strings"
)
func SubmitResult(caseList []string) {
config := config2.ReadCurrConfig()
entityType := config.EntityType
entityVal := config.EntityVal
requestObj := make(map[string]string)
requestObj["entityType"] = entityType
requestObj["entityVal"] = entityVal
cases := make(map[int]bool)
for _, str := range caseList {
arr := strings.Split(str, " ")
var status bool
str := strings.ToLower(strings.TrimSpace(arr[0]))
if str == "pass" {
status = true
} else {
status = false
func SubmitResult(assert string, date string) {
conf := configUtils.ReadCurrConfig()
report := GetTestTestReportForSubmit(assert, date)
for _, cs := range report.Cases {
id := cs.Id
runId := cs.IdInTask
var uri string
if runId != 0 { // exe case
uri = fmt.Sprintf("testtask-runCase-%d-%d-1.json", runId, id)
} else { // exe task
uri = fmt.Sprintf("testtask-runCase-%d.json", runId)
}
caseStr := commonUtils.Base(strings.TrimSpace(arr[1]))
name := strings.Replace(caseStr, path.Ext(caseStr), "", -1)
caseIdStr := strings.Split(name, "-")[1]
caseId, _ := strconv.Atoi(caseIdStr)
requestObj := map[string]string{"case": strconv.Itoa(id), "version": "0"}
cases[caseId] = status
for _, step := range cs.Steps {
var stepStatus string
if step.Status {
stepStatus = constant.PASS.String()
} else {
stepStatus = constant.FAIL.String()
}
stepResults := ""
for _, checkpoint := range step.CheckPoints {
stepResults += checkpoint.Actual // strconv.FormatBool(checkpoint.Status) + ": " + checkpoint.Actual
}
requestObj["steps["+strconv.Itoa(step.Id)+"]"] = stepStatus
requestObj["reals["+strconv.Itoa(step.Id)+"]"] = stepResults
}
reqStr, _ := json.Marshal(requestObj)
printUtils.PrintToCmd(string(reqStr))
url := conf.Url + uri
_, ok := httpClient.PostStr(url, requestObj)
if ok {
printUtils.PrintToCmd(fmt.Sprintf("success to submit the results for case %d", id))
}
}
//requestObj["cases"] = cases
}
func GetTestTestReportForSubmit(assert string, date string) model.TestReport {
mode, name := scriptService.GetRunModeAndName(assert)
resultPath := vari.Prefer.WorkDir + constant.LogDir + scriptService.LogFolder(mode, name, date) +
string(os.PathSeparator) + "result.json"
reqStr, _ := json.Marshal(requestObj)
print2.PrintToCmd(string(reqStr))
content := fileUtils.ReadFile(resultPath)
content = strings.Replace(content, "\n", "", -1)
url := config.Url
url = commonUtils.UpdateUrl(url)
_, _ = httpClient.Post(url+constant.UrlSubmitResult, requestObj)
var report model.TestReport
json.Unmarshal([]byte(content), &report)
//if err == nil {
// if pass {
// utils.PrintToCmd("success to submit the results")
// }
//}
return report
}
......@@ -16,7 +16,7 @@ func Login(baseUrl string, account string, password string) {
params["account"] = account
params["password"] = password
_, ok := client.Post(url, params)
_, ok := client.PostStr(url, params)
if ok {
fmt.Println("succes to login")
} else {
......
......@@ -63,7 +63,7 @@ func ListCaseByTask(baseUrl string, taskId string) []model.TestCase {
func GetCaseById(baseUrl string, caseId string) model.TestCase {
params := [][]string{{"caseID", caseId}}
url := baseUrl + zentaoUtils.GenSuperApiUri("testcase", "getById", params)
dataStr, ok := client.Post(url, nil)
dataStr, ok := client.PostStr(url, nil)
if ok {
var tc model.TestCase
......
package main
func main() {
}
package main
import (
testingService "github.com/easysoft/zentaoatf/src/service/testing"
zentaoService "github.com/easysoft/zentaoatf/src/service/zentao"
)
func main() {
zentaoService.Login("http://ztpmp.ngtesting.org/", "admin", "P2ssw0rd")
testingService.SubmitResult("scripts/all.suite", "2019-08-14T125610")
}
......@@ -65,7 +65,7 @@ func selectResultEvent(g *gocui.Gui, v *gocui.View) error {
line, _ := GetSelectedLine(v, ".*")
CurrResult = line
content := scriptService.GetTestResult(CurrAsset, line)
content := scriptService.GetTestResultForDisplay(CurrAsset, line)
panelCaseList, _ := g.View("panelCaseList")
panelCaseList.Clear()
......@@ -107,9 +107,7 @@ func clearPanelCaseResult() {
}
func toUploadResult(g *gocui.Gui, v *gocui.View) error {
caseList := scriptService.GetTestResult(CurrAsset, CurrResult)
testingService.SubmitResult(caseList)
testingService.SubmitResult(CurrAsset, CurrResult)
return nil
}
......
......@@ -41,17 +41,21 @@ const (
PASS ResultStatus = iota
FAIL
SKIP
BLOCKED
)
func (c ResultStatus) String() string {
switch c {
case PASS:
return "PASS"
return "pass"
case FAIL:
return "FAIL"
return "fail"
case SKIP:
return "SKIP"
return "n/a"
case BLOCKED:
return "blocked"
}
return "UNKNOWN"
}
......
......@@ -28,6 +28,10 @@ func PrintSample() {
}
func PrintToSide(msg string) {
if !vari.RunFromCui {
fmt.Println(msg)
return
}
slideView, _ := vari.Cui.View("side")
slideView.Clear()
......@@ -35,6 +39,10 @@ func PrintToSide(msg string) {
}
func PrintToMainNoScroll(msg string) {
if !vari.RunFromCui {
fmt.Println(msg)
return
}
mainView, _ := vari.Cui.View("main")
mainView.Clear()
......@@ -42,6 +50,10 @@ func PrintToMainNoScroll(msg string) {
}
func PrintToCmd(msg string) {
if !vari.RunFromCui {
fmt.Println(msg)
return
}
cmdView, _ := vari.Cui.View("cmd")
_, _ = fmt.Fprintln(cmdView, msg)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册