test_task.py 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. # -*- coding:utf-8 -*-
  2. import sys
  3. reload(sys)
  4. sys.setdefaultencoding('utf-8')
  5. class Item():
  6. NODE_RESULTS = "results"
  7. NODE_ITEM = "item"
  8. NODE_NAME = "name"
  9. NODE_RESULT = "result"
  10. NODE_DATA = "data"
  11. NODE_REMARK = "remark"
  12. NODE_LOG = "log"
  13. Screen_Max = 20
  14. def __init__(self):
  15. self.name = ""
  16. self.data = ""
  17. self.remark = ""
  18. self.result = ""
  19. self.screenPathList = []
  20. self.logPath = ""
  21. def getScreenNode(self):
  22. return "screen" #+ str(index)
  23. class TestCase():
  24. #测试结果xml属性
  25. rootNodeName = "all"
  26. caseNodeName = "case"
  27. dependNodeName = "depend"
  28. resultNodeName = "result"
  29. scriptNodeName = "script"
  30. detailNodeName = "rdetail"
  31. logNodeName = "log"
  32. cnNodeName = "name"
  33. descNodeName = "desc"
  34. #用例属性
  35. def __init__(self):
  36. self.selected = True
  37. self.index = -1
  38. self.name = ""
  39. self.desc = ""
  40. self.depend = ""
  41. # 测试结果属性
  42. self.result = "no"
  43. self.script = ""
  44. self.rdetail = ""
  45. self.log = ""
  46. # 用例属性
  47. self.srcScript = ""
  48. def getCaseModel(self):
  49. strarr = self.srcScript.split("/")
  50. if strarr.__len__() == 3:
  51. return strarr[0]
  52. class TestTask():
  53. swInfoNodeName = "SW_Information"
  54. testCaseNameNode = "testcase"
  55. caseNodeAttrFilePathLabel="filepath"
  56. caseNodeAttrNameLabel = "name"
  57. caseNodeAttrDescLabel = "desc"
  58. caseNodeAttrDependLabel = "depend"
  59. swInfoKeys = ["hardware", "SWVersion", "projectName", "projectID", "SWInclude"]
  60. def __init__(self):
  61. self.curcase = TestCase()
  62. self.allCase = []
  63. self.swInfoValue = []
  64. self.modelList = []
  65. #return 0:newmodel已经存在,不重复添加;1:newmodel不存在,添加成功
  66. def addTvModel(self, newmodel):
  67. for model in self.modelList:
  68. if (newmodel == model):
  69. return 0
  70. self.modelList.append(newmodel)
  71. return 1
  72. def addTestCase(self, testcase):
  73. self.allCase.append(testcase)
  74. strarr = testcase.srcScript.split("/")
  75. if strarr.__len__() == 3:
  76. self.addTvModel(strarr[0])
  77. def getCaseListByModel(self,modelname):
  78. caselist = []
  79. for tc in self.allCase:
  80. if (modelname == tc.getCaseModel()):
  81. #print "getCaseListByModel,tc name=", tc.name, ";desc=", tc.desc, ";Model=", tc.getCaseModel()
  82. caselist.append(tc)
  83. return caselist
  84. def getCaseByName(self, casename):
  85. for tc in self.allCase:
  86. if (tc.name == casename):
  87. return tc
  88. return None
  89. #寻找最初的依赖用例
  90. def checkDependTC(self, tcDepend, tcName):
  91. print "checkDependTC ,tcDepend=",tcDepend
  92. for tc in self.allCase:
  93. if (tc.name == tcDepend):
  94. return self.checkDependTC(tc.depend, tc.name)
  95. return tcName
  96. def findFirstNotExcutedCase(self):
  97. if (self.allCase.__len__() <= 0):
  98. return ""
  99. for tc in self.allCase:
  100. if (tc.result == "no"):
  101. return self.checkDependTC(tc.depend, tc.name)
  102. def findIndexByCaceName(self, caseName):
  103. for index in range (0, self.allCase.__len__()):
  104. if (self.allCase[index].name == caseName):
  105. return index
  106. return 0
  107. # result:Pass/Fail/no
  108. def getTCListByResult(self, tresult):
  109. cnList = []
  110. for tc in self.allCase:
  111. if (tc.result == tresult):
  112. self.addCaseAndDepend(cnList, tc.name)
  113. return cnList
  114. def addCaseAndDepend(self, cnList, tcname):
  115. tc = self.getCaseByName(tcname)
  116. if (tc <> None):
  117. self.addCaseAndDepend(cnList, tc.depend)
  118. cnList.append(tcname)