123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236 |
- package auto
- import (
- "bufio"
- "database/sql"
- "fmt"
- "math/rand"
- "os"
- "strings"
- "time"
- "xgAutoTest/internal/config"
- "xgAutoTest/internal/dbBase"
- "xgAutoTest/internal/global"
- "xgAutoTest/internal/produce"
- "xgAutoTest/internal/utils"
- )
- var imagesList [][]byte
- var tableUpperParts1 []produce.TableUpperPart
- func createLogFile() {
-
-
- err := utils.CreateFolder(global.FileLocal)
- if err != nil {
- global.Logs.Error("创建结果images文件夹失败: ", err)
- } else {
- global.Logs.Printf("创建结果images文件夹成功: %s\n", global.FileLocal)
- }
- err = utils.CreateFolder(fmt.Sprintf(global.FileLocal + "/images/single"))
- if err != nil {
- global.Logs.Error("创建结果single文件夹失败: ", err)
- } else {
- global.Logs.Printf("创建结果single文件夹成功: %s\n", global.FileLocal)
- }
- err = utils.CreateFolder(fmt.Sprintf(global.FileLocal + "/images/merged"))
- if err != nil {
- global.Logs.Error("创建结果merged文件夹失败: ", err)
- } else {
- global.Logs.Printf("创建结果merged文件夹成功: %s\n", global.FileLocal)
- }
- }
- func AutoRun(config config.ConfigInfo) {
-
- createLogFile()
-
- db := dbBase.GetDb()
-
- for _, Part := range config.CommandSql.Part {
- var tableUpperPartTemp produce.TableUpperPart
- tableUpperPartTemp.Left = make([]string, 0)
- tableUpperPartTemp.Right = make([]string, 0)
- tableUpperPartTemp.ImagesList = make([][]byte, 0)
- tableUpperPartTemp.SqlToTextsList = make([]string, 0)
-
- var texts string
-
- partMap := config.ParseGroupCase(Part)
-
- tableUpperPartTemp.Left = append(tableUpperPartTemp.Left, "用例名称")
- tableUpperPartTemp.Right = append(tableUpperPartTemp.Right, partMap["用例名称"])
- tableUpperPartTemp.Left = append(tableUpperPartTemp.Left, "测试要求")
- tableUpperPartTemp.Right = append(tableUpperPartTemp.Right, partMap["测试要求"])
- tableUpperPartTemp.Left = append(tableUpperPartTemp.Left, "测试步骤")
- tableUpperPartTemp.Right = append(tableUpperPartTemp.Right, partMap["测试步骤"])
- tableUpperPartTemp.Left = append(tableUpperPartTemp.Left, "测试程序")
- tableUpperPartTemp.Right = append(tableUpperPartTemp.Right, partMap["测试程序"])
-
- global.Logs.Printf("测试步骤: %s\n", partMap["测试步骤"])
- partTestStepScanner := bufio.NewScanner(strings.NewReader(partMap["测试步骤"]))
- var sql string
- for partTestStepScanner.Scan() {
- partLine := strings.ToLower(strings.TrimSpace(partTestStepScanner.Text()))
- fmt.Printf("partLine: %s\n", partLine)
- switch {
-
- case strings.HasPrefix(partLine, "--"):
- fmt.Println("带有--key")
- sql = strings.TrimSpace(strings.TrimPrefix(partLine, "--"))
- texts += sql
- texts += "\n"
- texts += "\n"
- sql = ""
-
-
- case strings.Contains(partLine, ";"):
- fmt.Println("带有;key")
-
- sql += strings.TrimSpace(partLine[:strings.Index(partLine, ";")+1])
-
- texts += sql
- texts += "\n"
- isQueryOrInsert(db, sql, &tableUpperPartTemp)
- sql = ""
- default:
- fmt.Println("继续读取key")
- sql += strings.TrimSpace(partLine)
- texts += sql
- texts += "\n"
- sql += "\n"
- }
- }
-
-
- tableUpperPartTemp.SqlToTextsList = append(tableUpperPartTemp.SqlToTextsList, texts)
- tableUpperParts1 = append(tableUpperParts1, tableUpperPartTemp)
-
- if err := partTestStepScanner.Err(); err != nil {
- fmt.Println("partTestStepScanner.Error reading input:", err)
- }
- }
- for i := range tableUpperParts1 {
- fmt.Printf("tableUpperParts1内有 %v 条数据\n", i+1)
- }
-
- generateWord(tableUpperParts1)
- }
- func executeSQL(partLine string, db *sql.DB, tableUpperPartTemp *produce.TableUpperPart) {
- var texts string
- switch {
-
- case strings.HasPrefix(partLine, "--"):
- sql := strings.TrimSpace(strings.TrimPrefix(partLine, "--"))
- texts += sql
- texts += "\n"
- texts += "\n"
-
-
- case strings.Contains(partLine, ";"):
-
- sql := strings.TrimSpace(partLine[:strings.Index(partLine, ";")+1])
-
- texts += sql
- texts += "\n"
- isQueryOrInsert(db, sql, tableUpperPartTemp)
- }
- }
- func isQueryOrInsert(db *sql.DB, sql string, tableUpperPartTemp *produce.TableUpperPart) {
- switch {
-
- case strings.HasPrefix(sql, "select"):
- {
- ret := dbBase.QueryString(db, sql)
- var im produce.ImageInfo
- imageRet, err := im.Runimage2(ret)
- if err != nil {
- global.Logs.Error(err)
- return
- }
- imagesList = append(imagesList, imageRet)
- tableUpperPartTemp.ImagesList = append(tableUpperPartTemp.ImagesList, imageRet)
- now := time.Now()
- im.SaveImage(fmt.Sprintf("%s/select %s_%s.png", fmt.Sprintf(global.FileLocal+"/images/single"), sql[len(sql)-5:], now.Format("2006-01-02 15:04:05.00000")))
- }
-
- case isBlob(sql):
- {
-
- }
-
- default:
- {
-
-
- ret := dbBase.ExecString(db, sql)
- var im produce.ImageInfo
- imageRet, err := im.Runimage2(ret)
- if err != nil {
- global.Logs.Error(err)
- return
- }
- imagesList = append(imagesList, imageRet)
- tableUpperPartTemp.ImagesList = append(tableUpperPartTemp.ImagesList, imageRet)
- now := time.Now()
- im.SaveImage(fmt.Sprintf("%s/(%s)_%s.png", fmt.Sprintf(global.FileLocal+"/images/single"), sql[:15], now.Format("2006-01-02 15:04:05.00000")))
- }
- }
- }
- func isBlob(sql string) bool {
- utils.ContainsKeyword(sql, "values")
- questionMarksCount := utils.IsInsertBlob(sql)
- switch {
- case questionMarksCount > 0:
- {
- return true
- }
- default:
- return false
- }
- }
- func generateWord(tableUpperParts1 []produce.TableUpperPart) {
- fmt.Println("调用generateWord()")
- wd := produce.Newword()
- for _, tableUpperPart := range tableUpperParts1 {
-
- mergedImage, err := produce.MergeImages(tableUpperPart.ImagesList)
- if err != nil {
- panic(err)
- }
- wd.WriterTable(global.FileLocal, "sad", tableUpperPart, mergedImage)
-
- timeNow := time.Now().Format("2006-01-02 15:04:05.00000")
-
- randomInt := rand.Intn(100)
- err = os.WriteFile(fmt.Sprintf("%s/merged_image_%s_%d.png", fmt.Sprintf(global.FileLocal+"/images/merged"), timeNow, randomInt), mergedImage, 0644)
- if err != nil {
- panic(err)
- }
- fmt.Println("生成合成图片-------------")
-
- }
-
- wd.SaveWord(global.FileLocal)
- }
|