场景:

robotframework 执行完用例之后,将执行结果报至testlink。

方案1: 通过TestLink-API-Python-client中的RF关键字 每条用例执行完成之后根据状态进行上报结果

方案2:

python 通过 TestLink-API-Python-client 库操作testlink

通过分析测试报告中的output.xml执行结果,通过testlink接口将结果上报。

实现:

新增关键字:testlink_caseid

入参 caseid

Set Test Documentation    TestLink.testcaseID=[${caseid}]

每条用例第一行增加testlink_caseid关键字 入参为此对应testlink对应的caseid

通过解析xml拿出testlink对应的caseid

关键字 代码如下:

# -*- coding:utf-8 -*-
__author__ = 'weikai'
import sys
from bs4 import BeautifulSoup
import json, re
import testlink
import os
from robot.api import logger reload(sys)
sys.setdefaultencoding('utf8') class ReportTestLink(object):
def __init__(self):
self.tls = None def connect_testlink(self, TESTLINK_API_PYTHON_SERVER_URL, TESTLINK_API_PYTHON_DEVKEY):
'''
:param TESTLINK_API_PYTHON_SERVER_URL: testlink的接口地址 如:http://IP:PORT/lib/api/xmlrpc/v1/xmlrpc.php
:param TESTLINK_API_PYTHON_DEVKEY: 2e9685efd7d2589b50987f00dc9d10d7 接口秘钥
:return:
'''
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) def report(self, report_xml_path, testplanid, buildname, user, platformname="0"):
'''
:param report_xml_path: rf测试报告xml文件路径
:param testplanid: 测试计划id
:param buildname: 测试计划的name
:param user: 执行用例人,要和秘钥对应 或者测试计划设置为公共
:param platformname: 平台 默认为0
:return:
''' caseoutlist = self._parse_reportxml(report_xml_path)
for i in caseoutlist:
caseid = i.get("caseid", "")
if caseid != '':
try:
self.tls.reportTCResult(testcaseid=caseid, testplanid=testplanid, buildname=buildname,
status=i.get("status", 'f'),
notes=i.get("notes", ""),
user=user, platformname=platformname)
except Exception as e:
logger.info(u"上报测试结果出现异常:%s" % e)
print(e) def _parse_reportxml(self, report_xml_path):
f = open(report_xml_path, "r")
body = f.read()
soup = BeautifulSoup(body, "lxml")
caselist = soup.findAll("test")
a = []
for i in caselist:
case = {}
execution = ''
case['casename'] = i.attrs['name']
if 'TestLink.testcaseID' in i.text:
doclist = i.findAll('doc')
for s in doclist:
if 'TestLink.testcaseID' in s.text:
execution = re.findall(r"TestLink.testcaseID=\[(.+?)\]", s.text, re.S)[0]
execution = execution.replace('[', '').replace(']', '')
if execution == '':
continue
case['caseid'] = execution # 正则进行匹配
status = i.find('status', attrs={'critical': 'yes'}).attrs['status']
if status == 'PASS':
status = 'p'
if status == "FAIL":
status = 'f'
if status == '':
continue
case['status'] = status
case['endtime'] = i.status.attrs['endtime']
case['notes'] = i.find('status', attrs={'critical': 'yes'}).text
a.append(case)
return a if __name__ == "__main__":
rtl = ReportTestLink()
rtl.connect_testlink('http://ip:port/lib/api/xmlrpc/v1/xmlrpc.php', '2e9685efd7d2589b50987f00dc9d10d7')
rtl.report('D:\loadrunnertmp\\temp\RIDEi3hesf.d\output.xml', '', '','')

转载:https://blog.csdn.net/w229051923/article/details/77336503

【转】robotFramework 与testlink集成的更多相关文章

  1. Testlink集成Jira时如果出现Error咋办?

    TestLink在用SOAP集成Jira时,如果出现: SOAP Fault: (code: WSDL, string: SOAP-ERROR: Parsing WSDL: Couldn't load ...

  2. RobotFramework和Eclipse集成-安装和使用说明

    1.安装python3. 安装说明: https://www.cnblogs.com/Simple-Small/p/9179061.html 2.RF安装命令:Pip install RobotFra ...

  3. RobotFramework与Jenkins集成后构建成功率高于设置阈值但总是显示失败

    摘要:robot执行后总是失败 1.在配置jenkins的job时,添加构建步骤Execute Windows batch command,输入执行robotframework测试用例命令 2.然后j ...

  4. RobotFramework与Jenkins集成发送邮件

    转: A.    目标:实现RobotFramework的脚本定时自动执行,执行完后自动将结果发送到指定邮箱 B.    前提1. 配置好Robot Framework的环境,脚本可以正常运行 2. ...

  5. RobotFramework与Jenkins集成后失败用例重跑

    Jenkins的执行Windows批处理命令填写如下: call pybot.bat -i 1adsInterface 01_测试用例\接口测试用例\adsInterface.txt call pyb ...

  6. RobotFramework与Jenkins集成后发送groovy报告(比别处多了用例作者信息)

    https://www.cnblogs.com/gcgc/p/10037891.html 这篇文章中最终的发送报告是这个样子,每天大家看到这封邮件后也不知道是不是自己的用例错误了,导致大家不积极回复邮 ...

  7. Robotframework集成jenkins执行用例

    Robotframework+jenkins配置 假设我们完成了一个模块的用例设计,可是想晚上9点或凌晨运行,这时候该怎么实现呢?jenkins可以很好解决我们的疑难. Jenkins安装 这里简单说 ...

  8. 小团队开发管理工具:gitlab+redmine+testlink+jenkins

    由于工作需要,需要为团队搭建一个高效可用的开发管理平台.现在可用的开发管理工具很多开源的.商业的,网上也有很多博客和文章.经过2周的学习比较,再结合自己的项目特点,最后选定工具集:gitlab+red ...

  9. RobotFrameWork系列免费课程-开课了~

    1. 背景介绍 有一段时间没有发表过文章了,一方面除了自己确实变得懒惰外,另一方面也确实有其它事情,无法抽出闲余时间来坚持写下去. 之前在博客园中,发表了关于<公开课一:Robot FrameW ...

随机推荐

  1. ipv6的校验格式

    ipv6的校验格式: ^(?:[0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}$

  2. 机器Coding For WPF

    declare @modelcode varchar(90)='AutoProjectType'declare @ns varchar(90)='WpfApplication'declare @dat ...

  3. 【三分】light bulb(zoj3203)

    题目描述: 如图,你可以在房间里移动,灯泡的高度为H,你的身高为h,灯泡与墙的水平距离为D,求你影子的最长长度(影子长度=地上影子长度+墙上影子长度) 样例输入: 0.5 样例输出: 1.000 0. ...

  4. python基于django编写api+前端后端分离

    有用 https://segmentfault.com/a/1190000016049962#articleHeader2 python的前后端分离(一):django+原生js实现get请求 htt ...

  5. sqlserver数据库查询,在数据类型不一致时容易出错

    1. 如此句sql: select SysNo from User_MainInfo where Ouid=@Ouid 在 User_MainInfo表中Ouid是nvarchar类型,但当我们传入的 ...

  6. sql server误删数据恢复delete(低效版)

    关键词:sql server误删数据恢复,mssql误删数据恢复,delete --切换数据库 use master --构建函数 Create PROCEDURE Recover_Deleted_D ...

  7. Wi-Fi 协议和数率?

    IEEE 802.11Wi-Fi 协议摘要 协议 频率 信号 最大数据速率 传统 802.11 2.4GHz FHSS 或 DSSS 2Mbps 802.11A 5GHz OFDM 54Mbps 80 ...

  8. [py]类的专有方法

    陆陆续续总结一些用到的类的特殊方法 看源码总会看到一些奇奇怪怪的写法: 掺杂着设计模式 https://coding.net/u/RuoYun/p/Python-design-pattern/git/ ...

  9. Windows下解压分卷压缩方法

    各种压缩分卷格式 rar分卷格式是*.part1.rar,*.part2.rar 等等. 360分卷压缩出来的文件的名字是*.zip.001.*.zip002 等等. WinZip分卷压缩出来的文件名 ...

  10. 自动出借-python+selenium

    自动出借 import time from selenium import webdriver # import os #B username = " # 请替换成你的用户名 passwor ...