如何将RobotFramework中case的执行结果上传到TestLink中。
公司的需求是: 用RobotFrameworjk框架执行case,用Testlink管理case和测试任务。需要持续统计每个版本的测试结果。
我觉得用Jenkins+Robot也行,Testlink+Robot也行。Testlink的优势就是可以管理case,分配测试任务。感觉如果要是能将Jenkins+Testlink+Robot整合到一起就完美了。
OK,其实将Robot的测试结果传到Testlink上也比较简单,找对接口就行,但是关键的就是,接口找不对...
Testlink的api模板我是没试成功。还有TCID(testcase ID),TPID(testplan ID)网上也没说怎么取。这里就详细的说下。
1. 下载安装TestLink-API-Python-client-0.6.1.zip,这个是别人封装好的接口。这个可以work...2. 自己先写个测试程序看看能不能连通Testlink(具体的TCID,TPID的查看在代码的说明中):
# -*- coding:utf-8 -*-
#! /usr/bin/python
import testlink
import os os.environ['TESTLINK_API_PYTHON_SERVER_URL'] = "http://yourtestlinkurl.com/lib/api/xmlrpc/v1/xmlrpc.php"
os.environ['TESTLINK_API_PYTHON_DEVKEY'] = "7776ad82392bfb213c5985508694a688" class FillResult(): def FillResultToTestLink(self,testcaseid, testplanid, buildname, result, note, user, platformid='' ):
self.testcaseid = testcaseid
self.testplanid = testplanid
self.buildname = buildname
self.result = result
self.note = note
self.user = user
self.platformid = platformid tls = testlink.TestLinkHelper().connect(testlink.TestlinkAPIClient)
print self.testcaseid, self.testplanid, self.buildname, self.result, self.note, self.user, self.platformid tls.reportTCResult(testcaseid=self.testcaseid, testplanid=self.testplanid, buildname=self.buildname, status=self.result,
notes=self.note)
"""
1. TestCaseID could check via the exported TestList XML file.
e.p:
<testcase internalid="43" name="通过get方式访问网页,参数中包含permit关键字">
The TestCaseID is 43.
2. TestPlanID need to find in TestLink Database.
Step:
[root@localhost ~]# mysql -uxxxxx -pxxxxxxxx
mysql> use testlink
mysql> select * from testplans;
+-----+----------------+-------+--------+---------+-----------+------------------------------------------------------------------+
| id | testproject_id | notes | active | is_open | is_public | api_key |
+-----+----------------+-------+--------+---------+-----------+------------------------------------------------------------------+
| 76 | 1 | | 1 | 1 | 1 | 07df3b4860ffbdc1577a669255541bc6578c90f581f0275ce5f3b27109521366 |
| 176 | 1 | | 0 | 1 | 0 | a01dbdbabd22c51b453e3c2eef1cb5f884f80bbd0afe3dde745373a6920f8bfb |
+-----+----------------+-------+--------+---------+-----------+------------------------------------------------------------------+
2 rows in set (0.00 sec) The Test PlanID is 76.
3. PlatFormID may be set to 0.
4. BuildName is the name defined in TestLink.
5. Result 'p' means 'Passed'; 'f' means 'Failed'.
6. Note will set in TestLink result description.
7. User is who execute this case.
""" if __name__ == "__main__": a = FillResult()
a.FillResultToTestLink(testcaseid='', testplanid='', buildname='执行1.0', result='f',
note='some notes',user='bonjov1', platformid='')
3. 执行完后,在Testlink中查看相应的case结果,应该是pass或者是fail。
4. 找我写的来,应该没有问题,可以work的。
5. 然后在RobotFramework中写一下在执行完case后将结果上传到Testlink中:
a)首先需要设置下开关,在执行正式测试任务是才会把结果上传到Testlink中,平时调试脚本时不需要上传case测试结果。
我是在总的Project下设置个全局变量“${debug}”,在执行正式测试任务时更改这个变量就行了。
b) 创建Testlink的关键字:testplanid, buildname, tester, 因为这些个变量比较固定,写在外面感觉就可以。
c) 创建Teardown关键字:
比如我这个Teardown是在执行完case后,退出FTP session:
Logout FTP
log nonononon
Run Keyword If Test Passed Fill Pass Result in TestLink
Run Keyword If Test Failed Fill Fail Result in TestLink Fill Pass Result in TestLink
Run Keyword IF ${debug}==1 Pass Execution Case: ${caseid} Finished
... ELSE FillResultToTestLink testcaseid=${caseid} testplanid=${testplanid} buildname=${buildname} result=p
... note='' user=${tester} Fill Fail Result in TestLink
Run Keyword IF ${debug}==1 Pass Execution Case: ${caseid} Finished
... ELSE FillResultToTestLink testcaseid=${caseid} testplanid=${testplanid} buildname=${buildname} result=f
... note='' user=${tester}
d)如果你写的参数都正确的话,应该就会自动的将测试结果传到Testlink上了。
如何将RobotFramework中case的执行结果上传到TestLink中。的更多相关文章
- kindeditor在Java项目中的应用以及图片上传配置
在官网下载Kindededitor的开发包 在项目中javaweb项目中导入kindeditor必须要使用的Jar包(用于文件上传,除非你的富文本编辑器不使用图片上传)jar包可以在官网的开发包中 ...
- vue+element-ui中的图片获取与上传
vue+element-ui中的图片获取与上传 工作上接触了一下图片的处理,图片的格式是文件流, 记录如下. 请求图片 请求图片的时候,带上{ responseType: 'blob' }, 否则图片 ...
- ueditor1.3.6jsp版在struts2应用中上传图片报"未找到上传文件"解决方案
摘要: ueditor1.3.6jsp版在struts2应用中上传图片报"未找到上传文件"解决方案 在struts2应用中使用ueditor富文本编辑器上传图片或者附件时,即使配置 ...
- 【javascript】html5中使用canvas编写头像上传截取功能
[javascript]html5中使用canvas编写头像上传截取功能 本人对canvas很是喜欢,于是想仿照新浪微博头像上传功能(前端使用canvas) 本程序目前在谷歌浏览器和火狐浏览器测试可用 ...
- struts文件上传拦截器中参数的配置(maximumSize,allowedTypes ,allowedExtensions)问题
<interceptor-ref name="fileUpload"> <param name="allowedTypes">image ...
- 【php增删改查实例】第二十四节 - 文件上传在项目中的具体应用
文件上传在项目中,一般有两个用武之地,分别为设置用户的头像和上传附件.本节我们演示如果进行用户头像的上传. 因为一个用户单独并且唯一对应了一个头像,是一对一的关系,所以我们需要去给tm_users表添 ...
- [js]uploadify结合jqueryUI弹出框上传,js中的冒出的bug,又被ie坑了
引言 最近在一个项目中,在用户列表中需要对给没有签名样本的个别用户上传签名的样本,就想到博客园中上传图片使用弹出框方式,博客园具体怎么实现的不知道,只是如果自己来弄,想到两个插件的结合使用,在弹出框中 ...
- zt对于C#中的FileUpload解决文件上传大小限制的问题设置
对于C#中的FileUpload解决文件上传大小限制的问题设置 您可能没意识到,但对于可以使用该技术上载的文件的大小存在限制.默认情况下,使用 FileUpload 控件上载到服务器的文件最大为 4M ...
- 学习Git的一点心得以及如何把本地修改、删除的代码上传到github中
一:学习Github的资料如下:https://git.oschina.net/progit/ 这是一个学习Git的中文网站,如果诸位能够静下心来阅读,不要求阅读太多,只需要阅读前三章,就可以掌握Gi ...
随机推荐
- 一分钟搭建好webpack通用坏境
经常忘记一些常用的webpack配置,在这记录一下. webpack能用babel编译es5.能预编译.能加载静态资源(js/css/html).是一个很通用的开发坏境虽然不是很智能但是很好用很方便. ...
- ZRDay6A. 萌新拆塔(三进制状压dp)
题意 Sol 这好像是我第一次接触三进制状压 首先,每次打完怪之后吃宝石不一定是最优的,因为有模仿怪的存在,可能你吃完宝石和他打就GG了.. 因此我们需要维护的状态有三个 0:没打 1:打了怪物 没吃 ...
- 抽象类&接口区别
抽象类:1.可以有构造方法. 2.可以有抽象方法也可以有具体方法. 3.权限修饰符可以是private.默认.protected.public. 4.可以定义成员变量. 5.interface ...
- django项目实现第三方github登录
OAuth(开放授权 Open Authorization)是一个开放标准,允许用户授权第三方网站访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方网站或分享他们数据的所有内容 ...
- 工具之UltraEdit之正则表达式
- 2D和3D效果
<style type="text/css"> #div1{ width: 200px; height: 200px; background-color:#aaa; c ...
- ngin负载均衡集群(一)
一.nginx负载均衡集群介绍: 1.反向代理与负载均衡概念简介严格地说, nginx仅仅是作为 Nginx Proxy反向代理使用的,因为这个反向代理功能表现的效果是负载均衡集群的效果,所以本文称之 ...
- Laravel 打印已执行的sql语句
打开app\Providers\AppServiceProvider.PHP,在boot方法中添加如下内容 5.2以下版本 // 先引入DB use DB; // 或者直接使用 \DB:: DB::l ...
- 2019年Vue学习路线图
https://juejin.im/entry/5c108864f265da61726555ed 官网: https://cn.vuejs.org/index.html js引入地址 https:// ...
- spark实战之网站日志分析
前面一篇应该算是比较详细的介绍了spark的基础知识,在了解了一些spark的知识之后相必大家对spark应该不算陌生了吧!如果你之前写过MapReduce,现在对spark也很熟悉的话我想你再也不想 ...