test.go 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  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. appport := conf.GlobalConfig["appport"]
  102. url := "http://127.0.0.1:" + appport + "/api/screen/scd/parse/step1"
  103. logger.Logger.Println(fmt.Sprintf("============正在测试解析scd文件的间隔和装置方法,请求URL:%s", url))
  104. postdata := []string{"station_id=100", "scd_path=/static/download/曲山20210520.scd", "scd_name=曲山20210520.scd"}
  105. postdataStr := strings.Join(postdata, "&")
  106. testResult, _ := tools.Post(url, postdataStr, UnitTestToken)
  107. logger.Logger.Println(fmt.Sprintf("============解析scd文件的间隔和装置方法测试结果:%+v", testResult))
  108. }
  109. //测点:创建测试任务
  110. func (t *UnitTest) CTask() {
  111. return
  112. appport := conf.GlobalConfig["appport"]
  113. url := "http://127.0.0.1:" + appport + "/api/task/save"
  114. logger.Logger.Println(fmt.Sprintf("============正在测试创建任务方法,请求URL:%s", url))
  115. postdata := []string{"id=0", "name=UnitTest_检测任务", "station_id=10", "memo=这是一个检测任务", "report_id=10", "scd_id=10", "modelids=1,2,4"}
  116. postdataStr := strings.Join(postdata, "&")
  117. testResult, _ := tools.Post(url, postdataStr, UnitTestToken)
  118. logger.Logger.Println(fmt.Sprintf("============创建任务方法测试结果:%+v", testResult))
  119. }
  120. //测点:删除测试任务
  121. func (t *UnitTest) DTask() {
  122. appport := conf.GlobalConfig["appport"]
  123. url := "http://127.0.0.1:" + appport + "/api/task/delete"
  124. logger.Logger.Println(fmt.Sprintf("============正在测试删除任务方法,请求URL:%s", url))
  125. postdata := []string{"id=5"}
  126. postdataStr := strings.Join(postdata, "&")
  127. testResult, _ := tools.Post(url, postdataStr, UnitTestToken)
  128. logger.Logger.Println(fmt.Sprintf("============删除任务方法测试结果:%+v", testResult))
  129. }