- pip install TestLink-API-Python-client
- 连接testlink
def connect_testlink(self, TESTLINK_API_PYTHON_SERVER_URL,TESTLINK_API_PYTHON_DEVKEY):`
os.environ["TESTLINK_API_PYTHON_SERVER_URL"] = TESTLINK_API_PYTHON_SERVER_URL
os.environ["TESTLINK_API_PYTHON_DEVKEY"] = TESTLINK_API_PYTHON_DEVKEY
self.tls = testlink.TestLinkHelper().connect(testlink.TestlinkAPIClient)
3.获取用例name和status
def getcase(self, path):
self.dom = xml.dom.minidom.parse(path)
self.root2 = xml.etree.ElementTree.parse(path)
self.tree3 = self.root2.getroot()
casedict = {}
testlist2 = []
for elem in self.tree3.iterfind('suite/suite'):
a = elem.attrib
suitedict = {}
testlist2.append(suitedict) #每一个用例集合存入列表
testlist = []
suitename = a['name'] #获取用例结合的名字
for test in elem.iter(tag='test'):
b = test.attrib
for data in test.iterfind('status'):
casename = b['name'] #获取用例的名字
c=data.attrib
status=c['status'] #获取每条用例的执行结果
casedict['casename'] = casename #用例名字存入字典
casedict['status'] = status #用例执行结果存入字典
testlist.append(casedict) #每一条用例的名字和执行结果作为字典存入列表
casedict = {}
suitedict['suitename']=suitename
suitedict['test']=testlist
print(testlist2)
return testlist2 #最终返回的就是[{'suitename': 'xxx', 'test': [{'casename': '01 xxx', 'status': 'PASS'}, {'casename': '02 xxx', 'status': 'PASS'}
def testcase(self,path):
testlist = self.getcase(path)
case = {}
for i in testlist:
caselist = i.get('test')
for j in caselist:
casename = j.get('casename')
caseID = casename.split(" :", 1)
testcaseexternalid = caseID[0]
print(casename)
status = j.get('status')
if status == 'PASS':
status = 'p'
if status == "FAIL":
status = 'f'
case[testcaseexternalid] = status
print(case)
return case
- 将结果传至testlink
def report(self, Report_xml_path, projectName, planName, User, Platformname="0"):
caseoutlist = self.testcase(Report_xml_path)
testplan_id_result = self.tls.getTestPlanByName(projectName, planName)
testplanid = testplan_id_result[0]['id']
response = self.tls.getBuildsForTestPlan(testplanid)
Buildname = response[0]['name']
print(Buildname)
for key, value in caseoutlist.items():
id = key
self.tls.reportTCResult(testcaseexternalid=id, testplanid=testplanid, buildname=Buildname, status=value,
user=User, platformname=Platformname)
return caseoutlist