123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- package auto
- import (
- "bufio"
- "database/sql"
- "fmt"
- "strings"
- "xgAutoTest/internal/config"
- "xgAutoTest/internal/dbBase"
- "xgAutoTest/internal/utils"
- )
- func AutoRun() {
- db := dbBase.GetDb()
- //defer db.Close()
- config := config.ConfigInfo{}
- config.GetConfigInfo("./file/test.txt")
- for _, Part := range config.CommandSql.Part {
- //fmt.Println("[sql] Part: ", Part)
- //[].part 键值
- partMap := config.ParseGroupCase(Part)
- //fmt.Println("[sql] partMap: ", partMap)
- //[].partMap[测试步骤],sql运行
- partTestStepScanner := bufio.NewScanner(strings.NewReader(partMap["测试步骤"]))
- for partTestStepScanner.Scan() {
- partLine := partTestStepScanner.Text()
- switch {
- case strings.HasPrefix(partLine, "--"):
- strings.TrimSpace(strings.TrimPrefix(partLine, "--"))
- //fmt.Printf("带有--key: %s\n", key)
- case strings.Contains(partLine, ";"):
- //fmt.Printf("不带有--sql: %s\n", partLine)
- sql := strings.TrimSpace(partLine[:strings.Index(partLine, ";")+1])
- //fmt.Printf("sql TrimSpace: %s\n", sql)
- isQueryOrInsert(db, sql)
- }
- }
- if err := partTestStepScanner.Err(); err != nil {
- fmt.Println("partTestStepScanner.Error reading input:", err)
- }
- }
- }
- func isQueryOrInsert(db *sql.DB, sql string) {
- switch {
- //执行查询语句
- case strings.HasPrefix(sql, "select"):
- {
- fmt.Printf("\nsql is select: %s\n", sql)
- dbBase.QueryString(db, sql)
- }
- //执行大对象插入语句
- case isBlob(sql):
- {
- fmt.Printf("\nsql is 大对象插入: %s\n", sql)
- }
- //其他语句调用exec函数
- default:
- {
- //不是大对象插入语句的处理
- fmt.Printf("\nsql is 不是大对象插入语句的处理: %s\n", sql)
- dbBase.ExecString(db, sql)
- }
- }
- }
- func isBlob(sql string) bool {
- utils.ContainsKeyword(sql, "values")
- questionMarksCount := utils.IsInsertBlob(sql)
- switch {
- case questionMarksCount > 0:
- {
- return true
- }
- default:
- return false
- }
- }
|