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)

操作测试用例集

创建用例集

  1. 无测试用例集

    新建项目,未创建测试集,此时获取first level的测试集为空。

    使用创建测试用例集函数createTestSuite时,最后一个参数parentid此时可以不用传输。
  2. 有测试用例集

    如果是创建在项目的根上,最后一个参数parentid此时可以不用传输。

    如果是创建在已有的测试用例集下面,最后一个参数parentid此时要传输为目标用例集的ID。

创建名称相同的用例集

如创建已经存在相同名称的用例集,不会报错,返回0。

创建不重复的用例集,成功后,返回结果如下:

[{'id': 68219, 'name': '', 'name_changed': False, 'status': True,
'operation': 'createTestSuite', 'additionalInfo': '', 'message': 'ok'}]

获取用例集

  1. 获取顶级用例集
getFirstLevelTestSuitesForTestProject(project_id)

处于顶级用例集下的用例集不会被返回,只返回(一级)标红的用例集。

  1. 获取指定用例集下的用例集

    用例集下只有一个用例集
用例集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的更多相关文章

  1. Fitnesse集成TestLink

    TestLink作为开源测试管理工具,可以进行测试工程.测试计划以及执行计划的管理,而且TestLink团队提供了XML-PRC的接口供第三方工具调用,接口支持程度也比较好. Fitnesse作为开源 ...

  2. Ubuntu16.04安装xampp及部署Testlink

    一.从官网下载xampp并安装: https://www.apachefriends.org/zh_cn/index.html chmod +x xampp-linux-x64-5.6.30-0-in ...

  3. 基于python+Testlink+Jenkins实现的接口自动化测试框架V3.0

    基于python+Testlink+Jenkins实现的接口自动化测试框架V3.0 目录 1. 开发环境2. 主要功能逻辑介绍3. 框架功能简介 4. 数据库的创建 5. 框架模块详细介绍6. Tes ...

  4. 【Python】实现将Excel编写的用例上传到testlink指定用例集

    背景 百科上说TestLink 是基于web的测试用例管理系统,主要功能是测试用例的创建.管理和执行,并且还提供了一些简单的统计功能.其他的信息可以参照他们的官网http://www.testlink ...

  5. 如何将RobotFramework中case的执行结果上传到TestLink中。

    公司的需求是: 用RobotFrameworjk框架执行case,用Testlink管理case和测试任务.需要持续统计每个版本的测试结果. 我觉得用Jenkins+Robot也行,Testlink+ ...

  6. TestLink+Jenkins在Ubuntu16.04搭建集成测试环境

    序章 序1:TestLink和TestLink-API-Python-client 目前TestLink的最新版本是1.9.19 TestLink-API-Python-client支持的TestLi ...

  7. python模块学习之testlink (自动回写测试案例执行结果到testlink)

    安装 pip install TestLink-API-Python-client #!/usr/bin/env Python # -*- coding: utf-8 -*- ''' Created ...

  8. 如何使用Postman编写Testlink测试用例

    Postman2Testlink 通过Postman快速操作testlink测试用例.测试套件.测试计划.添加关键词.添加自定义字段等等. 工具地址 https://github.com/liyinc ...

  9. Python之TestLink篇

    如何让时间变慢? 你们不知道吧,这个时候翻开书,时间又变慢了一倍,可以这样延年益寿,哈哈哈 ------------------------------------------------------ ...

随机推荐

  1. 使用 xposed 突破饿了么 ssl pining

    作为一个对各种黑科技充满好奇心的前端工程师,这一次盯上了现在的外卖大佬-饿了么.这篇文章记录了抓包饿了么过程中碰到的问题,以及解决方案,希望能够大家带来一点收获. 工具 夜神模拟器 + charles ...

  2. java接口自动化(二) - 接口测试的用例设计

    1.简介 在这篇文章里,我们来学习一下接口测试用例设计,主要是来学习一些用例设计要点.其实说白了,接口用例设计和功能用例设计差不多,照猫画虎即可.不要把它想象的多么高大上,多么的难,其实一样,以前怎么 ...

  3. npm git 常用命令行 记录

    1. 推出node命令行: 两次ctrl+C或者一次ctrl+D    退出终端:exit; 2.npm 常用 npm install <name>  安装包 npm install &l ...

  4. Building Applications with Force.com and VisualForce(Dev401)(十六):Data Management: Introduction to Upsert

    Dev401-017:Data Management: Introduction to Upsert Module Objectives1.Define upsert.2.Define externa ...

  5. 【原创】Linux select/poll机制原理分析

    前言 Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 1. 概述 Linux系统 ...

  6. 一、【Docker笔记】进入Docker世界

    ​ 我们平时判断一个电脑的性能主要看什么?磁盘读写?CPU的主频高低?还是内存的大小?可是作为个人使用者来说,这些参数高一些足够我们去使用了,可是对于一个大型系统甚至是超大型系统,当前的硬件是远远达不 ...

  7. HBase 监控 | HBase Metrics 初探(一)

    前言:对于任意一个系统而言,做好监控都是非常重要的,HBase也不例外.经常,我们会从JMX中获取相关指标来做展示.对HBase进行监控,那这些指标是怎么生成的呢?如果你想自定义自己的监控指标又该怎么 ...

  8. BFS、DFS ——J - Nightmare

    J - Nightmare Ignatius had a nightmare last night. He found himself in a labyrinth with a time bomb ...

  9. Vue学习(1)---Vue介绍

    Vue是什么 官方定义:Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用.Vue 的核心库只关注视图层 ...

  10. 1006 Sign In and Sign Out (25 分)

    At the beginning of every day, the first person who signs in the computer room will unlock the door, ...