testlink的api
testlink可以做很多你想象得到的事情,如API测试参数管理,Excel导入导出,快速模板创建测试用例,集成Jenkins。
TestLink API第三方库: TestLink-API-Python-client 0.8.0
example
获取私人key
点击进入用户的页面,点击生成key按钮,生成成功后会通过邮件发送到该用户邮箱。
需要配置testlink配置中的SMTP,否则会报错:LOCALIZE: apikey_cannot_be_reseted_invalid_smtp_hostname。
http://[YOURSERVER]/testlink/lib/api/xmlrpc/v1/xmlrpc.php
如果搭建的未修改为testlink而是原始文件夹testlink-1.9.15,这里链接中的testlink要修改为testlink-1.9.15。
获取TestlinkAPIClient对象实例
url = "http://11.12.13.16/testlink/lib/api/xmlrpc/v1/xmlrpc.php"
key = "9f5ec9cd058457usdko2191188"
tlc = testlink.TestlinkAPIClient(url, key)
获取基础信息
print(tlc.countProjects())
projects = tlc.getProjects()
for project in projects:
print(project)
操作测试用例集
创建用例集
- 无测试用例集
新建项目,未创建测试集,此时获取first level的测试集为空。
使用创建测试用例集函数createTestSuite时,最后一个参数parentid此时可以不用传输。 - 有测试用例集
如果是创建在项目的根上,最后一个参数parentid此时可以不用传输。
如果是创建在已有的测试用例集下面,最后一个参数parentid此时要传输为目标用例集的ID。
创建名称相同的用例集
如创建已经存在相同名称的用例集,不会报错,返回0。
创建不重复的用例集,成功后,返回结果如下:
[{'id': 68219, 'name': '', 'name_changed': False, 'status': True,
'operation': 'createTestSuite', 'additionalInfo': '', 'message': 'ok'}]
获取用例集
- 获取顶级用例集
getFirstLevelTestSuitesForTestProject(project_id)

处于顶级用例集下的用例集不会被返回,只返回(一级)标红的用例集。
- 获取指定用例集下的用例集
用例集下只有一个用例集
用例集1
用例集2
使用tlc.getTestSuitesForTestSuite(testsuite_id)返回的数据结构如下,开头不会多一个key:
{'id': '68596', 'details': '', 'name': '用例集2', 'node_type_id': '2', 'node_order': '1', 'parent_id': '68576'}
用例集下有多个用例集
用例集1
用例集2
用例集3
使用tlc.getTestSuitesForTestSuite(testsuite_id)返回的数据结构如下, 前面会多一个id的key:
{'68596':
{'id': '68596', 'details': '', 'name': '用例集2', 'node_type_id': '2', 'node_order': '1', 'parent_id': '68576'},
'68673':
{'id': '68673', 'details': '', 'name': '用例集3', 'node_type_id': '2', 'node_order': '2', 'parent_id': '68576'}}
试了下有3个子集的,情况和2个子集相同:
用例集1
用例集2
用例集3
用例集4
{'68596':
{'id': '68596', 'details': '', 'name': '用例集2', 'node_type_id': '2', 'node_order': '1', 'parent_id': '68576'},
'68673':
{'id': '68673', 'details': '', 'name': '用例集3', 'node_type_id': '2', 'node_order': '2', 'parent_id': '68576'},
'68674':
{'id': '68674', 'details': '', 'name': '用例集4', 'node_type_id': '2', 'node_order': '3', 'parent_id': '68576'}}
针对以上不同格式做不同处理。
操作测试用例
获取测试用例
def get_test_case(test_case_id):
test_case = tlc.getTestCase(None, testcaseexternalid=test_case_id)
for i in test_case:
print ("序列", "执行步骤", "预期结果")
for m in i.get("steps"):
print (m.get("step_number"), m.get("actions"), m.get("expected_results"))
get_test_case("auto-10") #要加上项目前缀
注意:这里的用例ID要加上项目前缀,否则获取不到
创建测试用例
源代码如下
def createTestCase(self, *argsPositional, **argsOptional):
参数
positional argument位置参数:
testcasename :测试用例名称
testsuiteid :创建在某个测试集,该测试集的ID
testprojectid :测试项目ID
authorlogin :创建人姓名
summary :用例总结
可选参数:
steps :步骤,为一个list
preconditions :前置条件
importance
executiontype
order
internalid
checkduplicatedname
actiononduplicatedname
status
estimatedexecduration
创建成功返回值
[
{'operation': 'createTestCase',
'status': True,
'id': 71278,
'additionalInfo':
{'id': 71278,
'external_id': '119',
'status_ok': 1,
'msg': 'ok',
'new_name': '',
'version_number': 1,
'has_duplicate': False,
'external_id_already_exists': False,
'update_name': False,
'tcversion_id': 71279},
'message': 'Success!'}
]
external_id: 用例的ID
步骤预先定义
方法1 使用list
必须是定义好的由字典组成的列表
steps =
[{'step_number' : 1, 'actions' : "action A" ,
'expected_results' : "result A", 'execution_type' : 0},
{'step_number' : 2, 'actions' : "action B" ,
'expected_results' : "result B", 'execution_type' : 1},
{'step_number' : 3, 'actions' : "action C" ,
'expected_results' : "result C", 'execution_type' : 0}]
newTestCase = self.tlc.createTestCase(........steps=steps)
方法2 使用initStep
该方法无需传递steps参数,已经预存在了tlc对象中
tlc.initStep("添加一个动作", "期望一个结果", 1)
tlc.appendStep("添加一个动作2", "期望一个结果2", 1)
tlc.appendStep("添加一个动作3", "期望一个结果3", 1)
newTestCase = self.tlc.createTestCase(.......)
获取关键字
tlc.listKeywordsForTC(testcase_id)
自定义字段
自定义关键则的操作方法,在编辑器中输入custom后,搜出的关键字有如下
第一个猜测是需求关键字。 get开头的获取关键字。 update开头的是更新关键字。
注意: testcaseexternalid一定要写全"au-117",-符号不能少。
获取用例自定义字段值
getTestCaseCustomFieldDesignValue(
testcaseexternalid="au-117",
testprojectid="68194",
customfieldname='版本号',
version=1
)
这里的version没找到是指哪里,填写1就可以了。
更新用例自定义字段值
tlc.updateTestCaseCustomFieldDesignValue(
testcaseexternalid="au-117",
testprojectid="68194",
version=1,
customfields={"版本号": "6.6"}
)
testlink的api的更多相关文章
- Fitnesse集成TestLink
TestLink作为开源测试管理工具,可以进行测试工程.测试计划以及执行计划的管理,而且TestLink团队提供了XML-PRC的接口供第三方工具调用,接口支持程度也比较好. Fitnesse作为开源 ...
- Ubuntu16.04安装xampp及部署Testlink
一.从官网下载xampp并安装: https://www.apachefriends.org/zh_cn/index.html chmod +x xampp-linux-x64-5.6.30-0-in ...
- 基于python+Testlink+Jenkins实现的接口自动化测试框架V3.0
基于python+Testlink+Jenkins实现的接口自动化测试框架V3.0 目录 1. 开发环境2. 主要功能逻辑介绍3. 框架功能简介 4. 数据库的创建 5. 框架模块详细介绍6. Tes ...
- 【Python】实现将Excel编写的用例上传到testlink指定用例集
背景 百科上说TestLink 是基于web的测试用例管理系统,主要功能是测试用例的创建.管理和执行,并且还提供了一些简单的统计功能.其他的信息可以参照他们的官网http://www.testlink ...
- 如何将RobotFramework中case的执行结果上传到TestLink中。
公司的需求是: 用RobotFrameworjk框架执行case,用Testlink管理case和测试任务.需要持续统计每个版本的测试结果. 我觉得用Jenkins+Robot也行,Testlink+ ...
- TestLink+Jenkins在Ubuntu16.04搭建集成测试环境
序章 序1:TestLink和TestLink-API-Python-client 目前TestLink的最新版本是1.9.19 TestLink-API-Python-client支持的TestLi ...
- python模块学习之testlink (自动回写测试案例执行结果到testlink)
安装 pip install TestLink-API-Python-client #!/usr/bin/env Python # -*- coding: utf-8 -*- ''' Created ...
- 如何使用Postman编写Testlink测试用例
Postman2Testlink 通过Postman快速操作testlink测试用例.测试套件.测试计划.添加关键词.添加自定义字段等等. 工具地址 https://github.com/liyinc ...
- Python之TestLink篇
如何让时间变慢? 你们不知道吧,这个时候翻开书,时间又变慢了一倍,可以这样延年益寿,哈哈哈 ------------------------------------------------------ ...
随机推荐
- SpringBoot 整合 MyCat 实现读写分离
MyCat一个彻底开源的,面向企业应用开发的大数据库集群.基于阿里开源的Cobar产品而研发.能满足数据库数据大量存储:提高了查询性能.文章介绍如何实现MyCat连接MySQL实现主从分离,并集成Sp ...
- JUC 中提供的限流利器-Semaphore(信号量)
在 JUC 包下,有一个 Semaphore 类,翻译成信号量,Semaphore(信号量)是用来控制同时访问特定资源的线程数量,它通过协调各个线程,以保证合理的使用公共资源.Semaphore 跟锁 ...
- PYTHON数据类型(进阶)
PYTHON数据类型(进阶) 一.字符串.列表.字典.元祖.集合的补充 str #captalize 首字母大写,其余小写 s1.capitalize() #swapcase 大小写翻转 s1.swa ...
- python绘图设置标题、标签,无法显示中文
先说解决办法:在程序开始之前,引入使用的模块之后,添加如下代码: plt.rcParams['font.sans-serif']=['SimHei'] plt.rcParams['axes.unico ...
- Go相关面试题目总结(日常更新)
1.go的深拷贝与浅拷贝 深拷贝 会赋值全部的内容 内容一样但是地址不一样 修改任何一个后地址不一样 内容也会一样 changeName(h1)对象传到函数里面也是深拷贝 b := a 这是深拷贝 会 ...
- STL之list函数解析
STL之list函数解析 list是C++标准模版库(STL,Standard Template Library)中的部分内容.实际上,list容器就是一个双向链表,可以高效地进行插入删除元素. 使用 ...
- 搭建DHProxy服务器
集群与存储 HAProxy简介 ...
- Spring Boot入门系列(十)如何使用拦截器,一学就会!
前面介绍了Spring Boot 如何整合定时任务已经Spring Boot 如何创建异步任务,不清楚的朋友可以看看之前的文章:https://www.cnblogs.com/zhangweizhon ...
- flask-文件上传的使用
flask-文件上传 在flask中使用request.files.get来获取文件对象 对获取到的文件对象可以使用save(filepath)方法来保存文件 上传的文件在保存前需要对文件名做一个过滤 ...
- 中阶d01-- web前端 html css js bootstrap
html 页面骨架结构css 页面优化js(脚本语言) 页面和用户互动 bootstrap 前端框架,主要实现不同设备直接打开页面时播放比例设置(全屏暂时,不要滚动条)