package test import ( "scd_check_tools/conf" "scd_check_tools/email" "scd_check_tools/logger" "scd_check_tools/models/bo" "encoding/json" "fmt" "reflect" "regexp" "time" ) //单元测试时使用的固定的用户token //在start时传入 var UnitTestToken = "" //单元测试类 type UnitTest struct { UserInfo map[string]interface{} } func Start(testtoken string) { //判断当前运行模式,仅当runmode为test时才启动所有的测试 //启动时会执行该方法中所有的测试过程 if conf.GlobalConfig["unittest"] != "true" { return } UnitTestToken = testtoken go func() { time.Sleep(10 * time.Second) t := new(UnitTest) logger.Logger.Println("******************正在进行单元测试********************") if t.UserInfo == nil { t.UserInfo = map[string]interface{}{"name": "单元测试", "ip": "127.0.0.1"} } typ := reflect.TypeOf(t) val := reflect.ValueOf(t) //获取reflect.Type类型 numOfMethod := typ.NumMethod() logger.Logger.Println(fmt.Sprintf("需要进行的单元测试有%d个", numOfMethod)) for i := 0; i < numOfMethod; i++ { val.Method(i).Call(nil) } }() } func (t *UnitTest) TestReg() { return xmlStr := `` pattern := `( lineno="\d{1,}" nodeid="\d{1,}")|( )|( ix="")|(.*?)` //替换其中的lineno和nodeid属性 reg := regexp.MustCompile(pattern) xmlStr = reg.ReplaceAllString(xmlStr, "") fmt.Println(xmlStr) } //测试邮件发送 func (t *UnitTest) TestEmailSend() { return err := new(email.Send).SendEmail("3116246@qq.com", "测试", "这是邮件发送测试", []string{}) if err != nil { logger.Logger.Error(err) } else { logger.Logger.Println("=====测试邮件已发送成功,请登录测试邮件确认!") } } //测试:根据告警等级统计结果 func (t *UnitTest) GetRuleLevelCheckList() { return //appport := conf.GlobalConfig["appport"] //url := "http://127.0.0.1:" + appport + "/api/model/get_south_model" //logger.Logger.Println(fmt.Sprintf("============正在测试GetModelList方法,请求URL:%s", url)) //testResult, _ := tools.Get(url, UnitTestToken) //logger.Logger.Println(fmt.Sprintf("============GetModelList方法测试结果:%+v", testResult)) testobj := new(bo.ScdNodeRule) testobj.ScdID = 16000007 logger.Logger.Println(fmt.Sprintf("============正在测试[根据告警等级统计结果]方法,参数:")) result, err := testobj.ResultStatByLevel("", "", "", "", "") if err != nil { logger.Logger.Error(err) } resultStr, _ := json.Marshal(result) logger.Logger.Println(fmt.Sprintf("============[根据告警等级统计结果]测试结果:%+v", string(resultStr))) } //测试:获取规则校验统计结果 func (t *UnitTest) GetRuleCheckList() { return //appport := conf.GlobalConfig["appport"] //url := "http://127.0.0.1:" + appport + "/api/model/get_south_model" //logger.Logger.Println(fmt.Sprintf("============正在测试GetModelList方法,请求URL:%s", url)) //testResult, _ := tools.Get(url, UnitTestToken) //logger.Logger.Println(fmt.Sprintf("============GetModelList方法测试结果:%+v", testResult)) testobj := new(bo.ScdNodeRule) testobj.ScdID = 16000007 logger.Logger.Println(fmt.Sprintf("============正在测试[获取规则校验统计结果]方法,参数:")) result, _, err := testobj.ResultList("", "", "", "", "", "", 1, 20) if err != nil { logger.Logger.Error(err) } resultStr, _ := json.Marshal(result) logger.Logger.Println(fmt.Sprintf("============[获取规则校验统计结果]测试结果:%+v", string(resultStr))) }