test.go 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  1. package test
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "reflect"
  6. "regexp"
  7. "scd_check_tools/conf"
  8. "scd_check_tools/email"
  9. "scd_check_tools/logger"
  10. "scd_check_tools/models/bo"
  11. "scd_check_tools/tools"
  12. "strings"
  13. "time"
  14. )
  15. //单元测试时使用的固定的用户token
  16. //在start时传入
  17. var UnitTestToken = ""
  18. //单元测试类
  19. type UnitTest struct {
  20. UserInfo map[string]interface{}
  21. }
  22. func Start(testtoken string) {
  23. //判断当前运行模式,仅当runmode为test时才启动所有的测试
  24. //启动时会执行该方法中所有的测试过程
  25. if conf.GlobalConfig["unittest"] != "true" {
  26. return
  27. }
  28. UnitTestToken = testtoken
  29. go func() {
  30. time.Sleep(10 * time.Second)
  31. t := new(UnitTest)
  32. logger.Logger.Println("******************正在进行单元测试********************")
  33. if t.UserInfo == nil {
  34. t.UserInfo = map[string]interface{}{"name": "单元测试", "ip": "127.0.0.1"}
  35. }
  36. typ := reflect.TypeOf(t)
  37. val := reflect.ValueOf(t) //获取reflect.Type类型
  38. numOfMethod := typ.NumMethod()
  39. logger.Logger.Println(fmt.Sprintf("需要进行的单元测试有%d个", numOfMethod))
  40. for i := 0; i < numOfMethod; i++ {
  41. val.Method(i).Call(nil)
  42. }
  43. }()
  44. }
  45. func (t *UnitTest) TestReg() {
  46. return
  47. xmlStr := `<LN0 lineno="211125" nodeid="4211127" desc="" inst="" lnClass="LLN0" lnType="AutoPrefix1532860310_SAC_PSIU600_LLN0" prefix="">`
  48. pattern := `( lineno="\d{1,}" nodeid="\d{1,}")|(&#xA;)|( ix="")|(<ext:eOption.*?>.*?</ext:eOption>)` //替换其中的lineno和nodeid属性
  49. reg := regexp.MustCompile(pattern)
  50. xmlStr = reg.ReplaceAllString(xmlStr, "")
  51. fmt.Println(xmlStr)
  52. }
  53. //测试邮件发送
  54. func (t *UnitTest) TestEmailSend() {
  55. return
  56. err := new(email.Send).SendEmail("3116246@qq.com", "测试", "这是邮件发送测试", []string{})
  57. if err != nil {
  58. logger.Logger.Error(err)
  59. } else {
  60. logger.Logger.Println("=====测试邮件已发送成功,请登录测试邮件确认!")
  61. }
  62. }
  63. //测试:根据告警等级统计结果
  64. func (t *UnitTest) GetRuleLevelCheckList() {
  65. return
  66. //appport := conf.GlobalConfig["appport"]
  67. //url := "http://127.0.0.1:" + appport + "/api/model/get_south_model"
  68. //logger.Logger.Println(fmt.Sprintf("============正在测试GetModelList方法,请求URL:%s", url))
  69. //testResult, _ := tools.Get(url, UnitTestToken)
  70. //logger.Logger.Println(fmt.Sprintf("============GetModelList方法测试结果:%+v", testResult))
  71. testobj := new(bo.ScdNodeRule)
  72. testobj.ScdID = 16000007
  73. logger.Logger.Println(fmt.Sprintf("============正在测试[根据告警等级统计结果]方法,参数:"))
  74. result, err := testobj.ResultStatByLevel("", "", "", "", "")
  75. if err != nil {
  76. logger.Logger.Error(err)
  77. }
  78. resultStr, _ := json.Marshal(result)
  79. logger.Logger.Println(fmt.Sprintf("============[根据告警等级统计结果]测试结果:%+v", string(resultStr)))
  80. }
  81. //测试:获取规则校验统计结果
  82. func (t *UnitTest) GetRuleCheckList() {
  83. return
  84. //appport := conf.GlobalConfig["appport"]
  85. //url := "http://127.0.0.1:" + appport + "/api/model/get_south_model"
  86. //logger.Logger.Println(fmt.Sprintf("============正在测试GetModelList方法,请求URL:%s", url))
  87. //testResult, _ := tools.Get(url, UnitTestToken)
  88. //logger.Logger.Println(fmt.Sprintf("============GetModelList方法测试结果:%+v", testResult))
  89. testobj := new(bo.ScdNodeRule)
  90. testobj.ScdID = 16000007
  91. logger.Logger.Println(fmt.Sprintf("============正在测试[获取规则校验统计结果]方法,参数:"))
  92. result, _, err := testobj.ResultList("", "", "", "", "", "", 1, 20)
  93. if err != nil {
  94. logger.Logger.Error(err)
  95. }
  96. resultStr, _ := json.Marshal(result)
  97. logger.Logger.Println(fmt.Sprintf("============[获取规则校验统计结果]测试结果:%+v", string(resultStr)))
  98. }
  99. //测试:解析scd文件的间隔和装置
  100. func (t *UnitTest) PScdIed() {
  101. return
  102. appport := conf.GlobalConfig["appport"]
  103. url := "http://127.0.0.1:" + appport + "/api/screen/scd/parse/step1"
  104. logger.Logger.Println(fmt.Sprintf("============正在测试解析scd文件的间隔和装置方法,请求URL:%s", url))
  105. postdata := []string{"station_id=861", "scd_path=\\static\\download\\曲山20210520.scd", "scd_name=曲山20210520.scd"}
  106. postdataStr := strings.Join(postdata, "&")
  107. testResult, _ := tools.Post(url, postdataStr, UnitTestToken)
  108. logger.Logger.Println(fmt.Sprintf("============解析scd文件的间隔和装置方法测试结果:%+v", testResult))
  109. }
  110. //测点:创建测试任务
  111. func (t *UnitTest) CTask() {
  112. return
  113. appport := conf.GlobalConfig["appport"]
  114. url := "http://127.0.0.1:" + appport + "/api/task/save"
  115. logger.Logger.Println(fmt.Sprintf("============正在测试创建任务方法,请求URL:%s", url))
  116. postdata := []string{"id=0", "name=UnitTest_检测任务", "station_id=861", "memo=这是一个检测任务", "report_id=10", "scd_id=10", "modelids=[[1,2]]"}
  117. postdataStr := strings.Join(postdata, "&")
  118. testResult, _ := tools.Post(url, postdataStr, UnitTestToken)
  119. logger.Logger.Println(fmt.Sprintf("============创建任务方法测试结果:%+v", testResult))
  120. }
  121. //测点:删除测试任务
  122. func (t *UnitTest) DTask() {
  123. return
  124. appport := conf.GlobalConfig["appport"]
  125. url := "http://127.0.0.1:" + appport + "/api/task/delete"
  126. logger.Logger.Println(fmt.Sprintf("============正在测试删除任务方法,请求URL:%s", url))
  127. postdata := []string{"id=91"}
  128. postdataStr := strings.Join(postdata, "&")
  129. testResult, _ := tools.Post(url, postdataStr, UnitTestToken)
  130. logger.Logger.Println(fmt.Sprintf("============删除任务方法测试结果:%+v", testResult))
  131. }
  132. //测试:添加接线方式
  133. func (t *UnitTest) AddTest12() {
  134. return
  135. appport := conf.GlobalConfig["appport"]
  136. url := "http://127.0.0.1:" + appport + "/api/admin/linkstyle/save"
  137. logger.Logger.Println(fmt.Sprintf("============正在测试添加接线方式方法,请求URL:%s", url))
  138. postdata := []string{"id=2", "name=单2母方式", "vol_id=152"}
  139. postdataStr := strings.Join(postdata, "&")
  140. testResult, _ := tools.Post(url, postdataStr, UnitTestToken)
  141. logger.Logger.Println(fmt.Sprintf("============添加接线方式方法测试结果:%+v", testResult))
  142. }
  143. //测试:查询接线方式
  144. func (t *UnitTest) AddTest13() {
  145. return
  146. appport := conf.GlobalConfig["appport"]
  147. url := "http://127.0.0.1:" + appport + "/api/admin/linkstyle/list"
  148. logger.Logger.Println(fmt.Sprintf("============正在测试查询接线方式方法,请求URL:%s", url))
  149. //postdata := []string{"id=2", "name=单2母方式", "vol_id=152"}
  150. //postdataStr := strings.Join(postdata, "&")
  151. testResult, _ := tools.Get(url, UnitTestToken)
  152. logger.Logger.Println(fmt.Sprintf("============查询接线方式方法测试结果:%+v", testResult))
  153. }
  154. //测试:添加内置模型
  155. func (t *UnitTest) AddTest14() {
  156. return
  157. appport := conf.GlobalConfig["appport"]
  158. url := "http://127.0.0.1:" + appport + "/api/admin/sysmodel/save"
  159. logger.Logger.Println(fmt.Sprintf("============正在测试添加内置模型方法,请求URL:%s", url))
  160. 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="}
  161. postdataStr := strings.Join(postdata, "&")
  162. testResult, _ := tools.Post(url, postdataStr, UnitTestToken)
  163. logger.Logger.Println(fmt.Sprintf("============添加内置模型方法测试结果:%+v", testResult))
  164. }
  165. //测试:查询内置模型
  166. func (t *UnitTest) AddTest15() {
  167. return
  168. appport := conf.GlobalConfig["appport"]
  169. url := "http://127.0.0.1:" + appport + "/api/admin/sysmodel/list"
  170. logger.Logger.Println(fmt.Sprintf("============正在测试查询内置模型方法,请求URL:%s", url))
  171. //postdata := []string{"id=2", "name=单2母方式", "vol_id=152"}
  172. //postdataStr := strings.Join(postdata, "&")
  173. testResult, _ := tools.Get(url, UnitTestToken)
  174. logger.Logger.Println(fmt.Sprintf("============查询内置模型方法测试结果:%+v", testResult))
  175. }
  176. func (t *UnitTest) Test16() {
  177. return
  178. testobj := new(bo.CheckAreaMgr)
  179. testobj.ScdId = 4000002
  180. logger.Logger.Println(fmt.Sprintf("============正在测试[生成检测模型间隔]方法,参数:"))
  181. testobj.Reset()
  182. }
  183. func (t *UnitTest) Test17() {
  184. return
  185. logger.Logger.Println(fmt.Sprintf("============正在测试[模型复制]方法,参数:"))
  186. testobj := new(bo.SysCheckModelMgr)
  187. testobj.Model.ModelName = "[15]"
  188. testobj.Copy(9)
  189. }
  190. func (t *UnitTest) Test18() {
  191. return
  192. logger.Logger.Println(fmt.Sprintf("============正在测试[删除模型]方法,参数:"))
  193. testobj := new(bo.SysCheckModelMgr)
  194. testobj.Model.Id = 32
  195. testobj.Delete()
  196. }
  197. func (t *UnitTest) Test19() {
  198. logger.Logger.Println(fmt.Sprintf("=============正在测试生成报告"))
  199. appport := conf.GlobalConfig["appport"]
  200. url := "http://127.0.0.1:" + appport + "/api/report/make"
  201. logger.Logger.Println(fmt.Sprintf("============正在测试报告生成,请求URL:%s", url))
  202. postdata := []string{"task_id=131"}
  203. postdataStr := strings.Join(postdata, "&")
  204. testResult, _ := tools.Post(url, postdataStr, UnitTestToken)
  205. logger.Logger.Println(fmt.Sprintf("============测试结果报告生成:%+v", testResult))
  206. }