feat(test): 添加测试数据生成和API请求功能
- test.go中添加了生成测试数据的逻辑,并使用gorequest库发起了HTTP POST请求。 - main.go中调整了插入消息的条件,现在包括'message_sent'类型。 - .gitignore中新增了请求数据的忽略项request.json。 - go.mod中新增了gorequest和goconvey库的依赖。 此功能使得测试更加自动化,能够更方便地进行数据的模拟和测试。
This commit is contained in:
parent
fef6cc7c9d
commit
8e4ad23278
6 changed files with 74 additions and 19 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -1,5 +1,6 @@
|
||||||
data.db
|
data.db
|
||||||
test.json
|
test.json
|
||||||
*.exe
|
*.exe
|
||||||
|
request.json
|
||||||
config.toml
|
config.toml
|
||||||
|
messages.json
|
4
go.mod
4
go.mod
|
@ -7,11 +7,13 @@ require github.com/BurntSushi/toml v1.3.2
|
||||||
require (
|
require (
|
||||||
github.com/goccy/go-json v0.10.2
|
github.com/goccy/go-json v0.10.2
|
||||||
github.com/mattn/go-sqlite3 v1.14.22
|
github.com/mattn/go-sqlite3 v1.14.22
|
||||||
|
github.com/parnurzeal/gorequest v0.3.0
|
||||||
)
|
)
|
||||||
|
|
||||||
require (
|
require (
|
||||||
|
github.com/elazarl/goproxy v0.0.0-20240618083138-03be62527ccb // indirect
|
||||||
github.com/moul/http2curl v1.0.0 // indirect
|
github.com/moul/http2curl v1.0.0 // indirect
|
||||||
github.com/parnurzeal/gorequest v0.3.0 // indirect
|
|
||||||
github.com/pkg/errors v0.9.1 // indirect
|
github.com/pkg/errors v0.9.1 // indirect
|
||||||
|
github.com/smartystreets/goconvey v1.8.1 // indirect
|
||||||
golang.org/x/net v0.26.0 // indirect
|
golang.org/x/net v0.26.0 // indirect
|
||||||
)
|
)
|
||||||
|
|
16
go.sum
16
go.sum
|
@ -1,9 +1,14 @@
|
||||||
github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8=
|
github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8=
|
||||||
github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
|
github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
|
||||||
|
github.com/elazarl/goproxy v0.0.0-20240618083138-03be62527ccb h1:2SoxRauy2IqekRMggrQk3yNI5X6omSnk6ugVbFywwXs=
|
||||||
|
github.com/elazarl/goproxy v0.0.0-20240618083138-03be62527ccb/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM=
|
||||||
|
github.com/elazarl/goproxy/ext v0.0.0-20190711103511-473e67f1d7d2/go.mod h1:gNh8nYJoAm43RfaxurUnxr+N1PwuFV3ZMl/efxlIlY8=
|
||||||
github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU=
|
github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU=
|
||||||
github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
|
github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
|
||||||
github.com/gorilla/websocket v1.5.1 h1:gmztn0JnHVt9JZquRuzLw3g4wouNVzKL15iLr/zn/QY=
|
github.com/gopherjs/gopherjs v1.17.2 h1:fQnZVsXk8uxXIStYb0N4bGk7jeyTalG/wsZjQ25dO0g=
|
||||||
github.com/gorilla/websocket v1.5.1/go.mod h1:x3kM2JMyaluk02fnUJpQuwD2dCS5NDG2ZHL0uE0tcaY=
|
github.com/gopherjs/gopherjs v1.17.2/go.mod h1:pRRIvn/QzFLrKfvEz3qUuEhtE/zLCWfreZ6J5gM2i+k=
|
||||||
|
github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo=
|
||||||
|
github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
|
||||||
github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o4kU=
|
github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o4kU=
|
||||||
github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y=
|
github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y=
|
||||||
github.com/moul/http2curl v1.0.0 h1:dRMWoAtb+ePxMlLkrCbAqh4TlPHXvoGUSQ323/9Zahs=
|
github.com/moul/http2curl v1.0.0 h1:dRMWoAtb+ePxMlLkrCbAqh4TlPHXvoGUSQ323/9Zahs=
|
||||||
|
@ -12,7 +17,10 @@ github.com/parnurzeal/gorequest v0.3.0 h1:SoFyqCDC9COr1xuS6VA8fC8RU7XyrJZN2ona1k
|
||||||
github.com/parnurzeal/gorequest v0.3.0/go.mod h1:3Kh2QUMJoqw3icWAecsyzkpY7UzRfDhbRdTjtNwNiUE=
|
github.com/parnurzeal/gorequest v0.3.0/go.mod h1:3Kh2QUMJoqw3icWAecsyzkpY7UzRfDhbRdTjtNwNiUE=
|
||||||
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
|
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
|
||||||
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||||
golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM=
|
github.com/rogpeppe/go-charset v0.0.0-20180617210344-2471d30d28b4/go.mod h1:qgYeAmZ5ZIpBWTGllZSQnw97Dj+woV0toclVaRGI8pc=
|
||||||
golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE=
|
github.com/smarty/assertions v1.15.0 h1:cR//PqUBUiQRakZWqBiFFQ9wb8emQGDb0HeGdqGByCY=
|
||||||
|
github.com/smarty/assertions v1.15.0/go.mod h1:yABtdzeQs6l1brC900WlRNwj6ZR55d7B+E8C6HtKdec=
|
||||||
|
github.com/smartystreets/goconvey v1.8.1 h1:qGjIddxOk4grTu9JPOU31tVfq3cNdBlNa5sSznIX1xY=
|
||||||
|
github.com/smartystreets/goconvey v1.8.1/go.mod h1:+/u4qLyY6x1jReYOp7GOM2FSt8aP9CzCZL03bI28W60=
|
||||||
golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ=
|
golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ=
|
||||||
golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE=
|
golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE=
|
||||||
|
|
4
main.go
4
main.go
|
@ -23,7 +23,7 @@ func insertMessage(db *sql.DB, data map[string]interface{}) error {
|
||||||
// if err != nil {
|
// if err != nil {
|
||||||
// log.Fatal(err)
|
// log.Fatal(err)
|
||||||
// }
|
// }
|
||||||
if data["post_type"] == "message" {
|
if data["post_type"] == "message" || data["post_type"] == "message_sent" {
|
||||||
// id := data["message_id"].(float64)
|
// id := data["message_id"].(float64)
|
||||||
post_type := data["post_type"].(string)
|
post_type := data["post_type"].(string)
|
||||||
message_type := data["message_type"].(string)
|
message_type := data["message_type"].(string)
|
||||||
|
@ -46,7 +46,7 @@ func insertMessage(db *sql.DB, data map[string]interface{}) error {
|
||||||
sender_role := sender["role"].(string)
|
sender_role := sender["role"].(string)
|
||||||
message_seq := data["message_seq"].(float64)
|
message_seq := data["message_seq"].(float64)
|
||||||
|
|
||||||
fmt.Println(post_type, message_time, group_id, message_id, raw_message, sender_user_id, sender_nickname, sender_card, sender_role, message_seq)
|
fmt.Println(post_type, message_time, int64(group_id), int64(message_id), raw_message, sender_user_id, sender_nickname, sender_card, sender_role, int64(message_seq))
|
||||||
// Insert data into database
|
// Insert data into database
|
||||||
_, err = db.Exec("INSERT INTO messages ( post_type, message_type, time, group_id, message_id, raw_message, sender_user_id, sender_nickname, sender_card, sender_role, message_seq) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",
|
_, err = db.Exec("INSERT INTO messages ( post_type, message_type, time, group_id, message_id, raw_message, sender_user_id, sender_nickname, sender_card, sender_role, message_seq) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",
|
||||||
post_type, message_type, message_time, group_id, message_id, raw_message, sender_user_id, sender_nickname, sender_card, sender_role, message_seq)
|
post_type, message_type, message_time, group_id, message_id, raw_message, sender_user_id, sender_nickname, sender_card, sender_role, message_seq)
|
||||||
|
|
62
test/test.go
62
test/test.go
|
@ -3,29 +3,71 @@ package main
|
||||||
import (
|
import (
|
||||||
"bufio"
|
"bufio"
|
||||||
"fmt"
|
"fmt"
|
||||||
"go-bot/workers"
|
"go-bot/config"
|
||||||
"os"
|
"os"
|
||||||
"strings"
|
"strings"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/parnurzeal/gorequest"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
|
||||||
for {
|
for {
|
||||||
reader := bufio.NewReader(os.Stdin)
|
reader := bufio.NewReader(os.Stdin)
|
||||||
// cfg := config.GetConfig()
|
cfg := config.GetConfig()
|
||||||
// config.PrintConfig(cfg, "")
|
fmt.Print("输入指令:")
|
||||||
fmt.Print("输入指令(不要带/):")
|
|
||||||
raw_msg, _ := reader.ReadString('\n')
|
raw_msg, _ := reader.ReadString('\n')
|
||||||
// 去除末尾的换行符
|
// 去除末尾的换行符
|
||||||
// raw_msg = strings.TrimRight(raw_msg, "\r\n")
|
raw_msg = strings.TrimRight(raw_msg, "\r\n")
|
||||||
if raw_msg == "" {
|
if raw_msg == "" {
|
||||||
raw_msg = "ping"
|
raw_msg = "!ping"
|
||||||
}
|
}
|
||||||
parms := strings.Fields(raw_msg)
|
if raw_msg == "!exit" {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
// parms := strings.Fields(raw_msg)
|
||||||
|
|
||||||
worker := workers.NewWorker(parms, "794508986", "874769998", "111", "222", raw_msg)
|
message := map[string]interface{}{
|
||||||
fmt.Println("TestPermission:", worker.CheckPermission())
|
"post_type": "message",
|
||||||
message := worker.GetMsg()
|
"message_type": "group",
|
||||||
|
"time": float64(time.Now().Unix()),
|
||||||
|
"group_id": float64(874769998),
|
||||||
|
"message_id": float64(time.Now().Unix()),
|
||||||
|
"raw_message": raw_msg,
|
||||||
|
"sender": map[string]interface{}{
|
||||||
|
"user_id": float64(794508986),
|
||||||
|
"nickname": "111",
|
||||||
|
"card": "",
|
||||||
|
"role": "owner",
|
||||||
|
},
|
||||||
|
"message_seq": float64(time.Now().Unix()),
|
||||||
|
"user_id": float64(794508986),
|
||||||
|
}
|
||||||
fmt.Println("message:", message)
|
fmt.Println("message:", message)
|
||||||
|
// jsonData, err := json.MarshalIndent(message, "", " ")
|
||||||
|
// if err != nil {
|
||||||
|
// log.Fatal(err)
|
||||||
|
// }
|
||||||
|
|
||||||
|
// file, err := os.Create("message.json")
|
||||||
|
// if err != nil {
|
||||||
|
// log.Fatal(err)
|
||||||
|
// }
|
||||||
|
// defer file.Close()
|
||||||
|
// _, err = file.Write(jsonData)
|
||||||
|
// if err != nil {
|
||||||
|
// log.Fatal(err)
|
||||||
|
// }
|
||||||
|
url := "http://" + cfg["APIURL"].(string)
|
||||||
|
request := gorequest.New()
|
||||||
|
_, _, err := request.Post(url).Send(message).End()
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("Error:", err)
|
||||||
|
}
|
||||||
|
// worker := workers.NewWorker(parms, "794508986", "874769998", "111", "222", raw_msg)
|
||||||
|
// fmt.Println("TestPermission:", worker.CheckPermission())
|
||||||
|
// message := worker.GetMsg()
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package workers
|
package workers
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"go-bot/config"
|
"go-bot/config"
|
||||||
"log"
|
"log"
|
||||||
"strings"
|
"strings"
|
||||||
|
@ -154,11 +155,12 @@ func (a *AI) GetMsg() string {
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
log.Println("choices为空")
|
log.Println("choices为空")
|
||||||
|
msg = "api解析失败"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return msg
|
return fmt.Sprintf("[CQ:at,qq=%s] %s", a.UID, msg)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue