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 } }