场景:

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. Java如何对List集合的操作方法(一)

    目录: list中添加,获取,删除元素: list中是否包含某个元素: list中根据索引将元素数值改变(替换): list中查看(判断)元素的索引: 根据元素索引位置进行的判断: 利用list中索引 ...

  2. Jenkins send build artifacts over ssh配置

    配置jenkins远程部署的时候遇到的配置问题: 首先在系统设置-系统设置-Publish over SSH-SSH Server中配置服务器信息 配置完成后可以点击Test Configuratio ...

  3. 如何将文章列表用<li>分两列显示

    我们平时用ul或ol标签来罗列文章列表时默认是一列,为了美观起见,想把它们两列显示要如何操作呢?怎么用css定义它们? 其实相对比较简单,用几行css样式定义一下就够了,可以用div + css来控制 ...

  4. 004-读书笔记-企业IT架构转型之道-阿里巴巴中台战略思想与架构实战-共享服务中心建设原则

    一般来说服务能力包括两个层次,一个是底层paas的能力,PaaS层结局大型架构在分布式.可靠性.可用性.容错.监控以及运维层面上的通用需求:第二个层次是业务能力,业务能力提供云化的核心业务支撑能力,这 ...

  5. 字符串类型 str-->转义符-->字符串格式化-->占位符-->综合案例

    # ###字符串类型 str """ 用引号起来的就是字符串 三种引号:单引号 双引号 三引号 """ """ ...

  6. 桌面图标未读消息(小米,sony,三星手机)

    新消息来了,在桌面的Laucher图标上显示新消息数 /** * 应用桌面图标未读消息显示工具类 * 只支持 小米,三星和索尼 */ public class BadgeUtil { final st ...

  7. SOA架构父工程的pom配置

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...

  8. 【LeetCode每天一题】Rotate Image(旋转矩阵)

    You are given an n x n 2D matrix representing an image.Rotate the image by 90 degrees (clockwise). N ...

  9. Ext create动态加载分析

    主要涉及到Ext.js Inventory.js ClassManager.js Class.js Loader.js Boot.js 在ClasManager.js的Ext.create中 Ext. ...

  10. Fiddler 手机抓包设置

    IOS 为例 1. Fiddler -> Tools -> Options ->Connection 2. 手机 Settings -> WIFI ->设置当前连接的网络 ...