package test import ( "encoding/json" "fmt" "reflect" "regexp" "scd_check_tools/conf" "scd_check_tools/email" "scd_check_tools/logger" "scd_check_tools/models/bo" "scd_check_tools/tools" "strings" "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))) } //测试:解析scd文件的间隔和装置 func (t *UnitTest) PScdIed() { return appport := conf.GlobalConfig["appport"] url := "http://127.0.0.1:" + appport + "/api/screen/scd/parse/step1" logger.Logger.Println(fmt.Sprintf("============正在测试解析scd文件的间隔和装置方法,请求URL:%s", url)) postdata := []string{"station_id=861", "scd_path=\\static\\download\\曲山20210520.scd", "scd_name=曲山20210520.scd"} postdataStr := strings.Join(postdata, "&") testResult, _ := tools.Post(url, postdataStr, UnitTestToken) logger.Logger.Println(fmt.Sprintf("============解析scd文件的间隔和装置方法测试结果:%+v", testResult)) } //测点:创建测试任务 func (t *UnitTest) CTask() { return appport := conf.GlobalConfig["appport"] url := "http://127.0.0.1:" + appport + "/api/task/save" logger.Logger.Println(fmt.Sprintf("============正在测试创建任务方法,请求URL:%s", url)) postdata := []string{"id=0", "name=UnitTest_检测任务", "station_id=861", "memo=这是一个检测任务", "report_id=10", "scd_id=10", "modelids=[[1,2]]"} postdataStr := strings.Join(postdata, "&") testResult, _ := tools.Post(url, postdataStr, UnitTestToken) logger.Logger.Println(fmt.Sprintf("============创建任务方法测试结果:%+v", testResult)) } //测点:删除测试任务 func (t *UnitTest) DTask() { return appport := conf.GlobalConfig["appport"] url := "http://127.0.0.1:" + appport + "/api/task/delete" logger.Logger.Println(fmt.Sprintf("============正在测试删除任务方法,请求URL:%s", url)) postdata := []string{"id=5"} postdataStr := strings.Join(postdata, "&") testResult, _ := tools.Post(url, postdataStr, UnitTestToken) logger.Logger.Println(fmt.Sprintf("============删除任务方法测试结果:%+v", testResult)) } //测试:添加接线方式 func (t *UnitTest) AddTest12() { return appport := conf.GlobalConfig["appport"] url := "http://127.0.0.1:" + appport + "/api/admin/linkstyle/save" logger.Logger.Println(fmt.Sprintf("============正在测试添加接线方式方法,请求URL:%s", url)) postdata := []string{"id=2", "name=单2母方式", "vol_id=152"} postdataStr := strings.Join(postdata, "&") testResult, _ := tools.Post(url, postdataStr, UnitTestToken) logger.Logger.Println(fmt.Sprintf("============添加接线方式方法测试结果:%+v", testResult)) } //测试:查询接线方式 func (t *UnitTest) AddTest13() { return appport := conf.GlobalConfig["appport"] url := "http://127.0.0.1:" + appport + "/api/admin/linkstyle/list" logger.Logger.Println(fmt.Sprintf("============正在测试查询接线方式方法,请求URL:%s", url)) //postdata := []string{"id=2", "name=单2母方式", "vol_id=152"} //postdataStr := strings.Join(postdata, "&") testResult, _ := tools.Get(url, UnitTestToken) logger.Logger.Println(fmt.Sprintf("============查询接线方式方法测试结果:%+v", testResult)) } //测试:添加内置模型 func (t *UnitTest) AddTest14() { return appport := conf.GlobalConfig["appport"] url := "http://127.0.0.1:" + appport + "/api/admin/sysmodel/save" logger.Logger.Println(fmt.Sprintf("============正在测试添加内置模型方法,请求URL:%s", url)) postdata := []string{"id=1", "model_name=线路保护", "vol_id=152", "area_type=116330", "ied_types=P,M,I,C,MM,PM", "line_link_style=2", "relation_json="} postdataStr := strings.Join(postdata, "&") testResult, _ := tools.Post(url, postdataStr, UnitTestToken) logger.Logger.Println(fmt.Sprintf("============添加内置模型方法测试结果:%+v", testResult)) } //测试:查询内置模型 func (t *UnitTest) AddTest15() { return appport := conf.GlobalConfig["appport"] url := "http://127.0.0.1:" + appport + "/api/admin/sysmodel/list" logger.Logger.Println(fmt.Sprintf("============正在测试查询内置模型方法,请求URL:%s", url)) //postdata := []string{"id=2", "name=单2母方式", "vol_id=152"} //postdataStr := strings.Join(postdata, "&") testResult, _ := tools.Get(url, UnitTestToken) logger.Logger.Println(fmt.Sprintf("============查询内置模型方法测试结果:%+v", testResult)) } func (t *UnitTest) Test16() { return testobj := new(bo.CheckAreaMgr) testobj.ScdId = 4000002 logger.Logger.Println(fmt.Sprintf("============正在测试[生成检测模型间隔]方法,参数:")) testobj.Reset() }