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

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

 

by:授客 QQ1033553122

 

  博客:http://blog.sina.com.cn/ishouke

欢迎加入软件性能测试交流QQ群:7156436

 

 

 

目录

1      开发环境... 1

2      主要功能逻辑介绍... 1

3      框架功能简介... 3

4      框架模块详细介绍... 3

5      Testlink相关的配置与用例管理... 10

6      运行结果... 13

7      源码下载... 14

8      说明... 14

 

1、  开发环境

win7

PyCharm 4.0.5

python 3.3.2

 

testlink-1.9.14

下载地址http://pan.baidu.com/s/1c16H50O

安装教程:http://blog.sina.com.cn/s/blog_13cc013b50102w9am.html

 

TestLink-API-Python-client-master

下载地址http://pan.baidu.com/s/1pLrcunT

 

2、  主要功能逻辑介绍

 

 

 

 

3、  框架功能简介

1、框架集成了Testlink,可使用Testlink灵活对测试项目,测试计划,测试用例进行管理

 

2可通过配置文件灵活配置运行模式,支持按测试项目、测试计划、测试套件批量运行执行用例

 

3、支持HTTPSHTTPWebService协议,支持POST, GET方法,支持JSON,非JSON数据格式的请求,支持多种形式的数据校验

 

4、可自动生成HTML可视化接口测试报告

 

5、可根据配置在测试完成后,自动发送测试报告邮件

 

6、支持文件、控制的日志打印,可分别控制开关

 

7、支持模块化开发

 

8、可集成Jenkins自动运行脚本

参考文章:Jenkins添加Windows Slave远程执行python项目脚本

 

 

4、  框架模块详细介绍

a)   config

 



 

dbconfig.conf包含测试数据库,应用数据库的配置信息

 

logconfig.conf包含日志配置信息,具体如下:

 

 



 

mail.conf包含邮件发送配置信息,如下,

 

 



注:不同类型的邮箱(发件人邮箱),需要修改配置文件为对应的host和端口

smtp.163.com:25

smtp.qq.com:465

 

report.conf包含测试报告文件配置信息,如下

 

 



 

runmodeconfig.conf包含运行模式配置信息

 

 



 

runmodeconfig.py日志配置类

 

b)   globalpkg

 

 



log.py实现日志打印类

 

mydb.py实现数据库类,封装数据库相关操作

 

mytestlink.py主要用于获取testlink连接实例

 

othertools.py实现其它通用功能,比如数据转换,批量创建目录等

 

globalpy.py主要提供全局变量,全局实例等

 

 



 

c)   logstestreport

可分别用于存放日志文件,测试报告

 

d)   interface

封装接口测试方法类

 

 



 

说明:可根据需要,每个接口对应一个模块,对应一个类;也可以多个接口对应一个模块,对应一个类

需要注意的是,这里添加的模块及类,需要在casestep.py中导入

 

 

目前框架中的模块给出了一些案例,如下:

 

 

 



 

对应用例配置:

 

 


 


接口自动化 <wbr>基于python+Testlink+Jenkins实现的接口自动化测试框架

 

 

更多案例烦自行查阅模块

 

e)   其它模块

如下,顾名思义

 

 

 



 

5、  Testlink必要的配置与用例管理

 

为了批量设置接口ip,端口(主要是这两个),协议信息(仅用于展示),需要对项目,计划,套件等必要的配置,以及客户端环境变量配置

a)   配置

如下,登陆Testlink,进入用户管理-查看用户,如下

 



 

   点击目标用户(例中为admin),打开如下界面

   接口自动化 <wbr>基于python+Testlink+Jenkins实现的接口自动化测试框架

  

 



    点击生成新的密钥,如下

 



在运行python脚本端进行环境变量的配置,如下:

1、新建系统环境变量“TESTLINK_API_PYTHON_DEVKEY”,变量值为上述秘钥

 

 



 

2、新建“TESTLINK_API_PYTHON_SERVER_URL”系统环境变量,变量值为

http://{host}/testlink/lib/api/xmlrpc/v1/xmlrpc.php”,其中hosttestlink的访问地址

 

 



测试是否生效:

C:\Users\laiyu>python

Python 3.3.2 (v3.3.2:d047928ae3f6, May 16 2013, 00:03:43) [MSC v.1600 32

tel)] on win32

Type "help", "copyright", "credits" or "license" for more information.

>>> import testlink

>>> tls = testlink.TestLinkHelper().connect(testlink.TestlinkAPIClient)

>>> tls.testLinkVersion()

'1.9.14'

 

      项目,计划,套件等相关配置
     

 


 



 



b)   用例管理

 



 



 

 






 

6、  运行结果

见源码附件

 

7、  源码下载

下载地址:http://pan.baidu.com/s/1c2Av9FM

 

下载后解压,用pycharm导入项目即可

 

8、  说明

时间有限,精力有限,暂且就到这吧,有需要的可以自己扩展、修改框架。

注:目前还存在个bug,测试报告中,类似xml格式数据没显示出来,有兴趣的烦先自己解决下。

 

转载于:https://www.cnblogs.com/shouke/p/10157784.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/357387.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PC钉钉无法输入汉字的解决办法

问题描述 新公司办公OA使用的钉钉&#xff0c;今天想给设计师发消息呢&#xff0c;发现私活输入不了汉字&#xff0c;早上还行呢&#xff0c; 过程尝试 在百度中可以输入汉字&#xff0c;在钉钉中不行。 解决办法 退出钉钉&#xff0c;重新进入&#xff0c;可以输入汉字了。如果…

this的指向

箭头函数&#xff1a;定义时所在的作用域&#xff08;tip:继承而来 函数作用域 &#xff09; 普通函数&#xff1a;指向调用它的对象 箭头函数体内的 this对象&#xff0c;就是定义时所在的对象&#xff0c;而不是使用时所在的对象 1、箭头函数没有自己的this&#xff0c;ar…

事关每个程序员的职业规划与履历

今天&#xff0c;甚至过去&#xff0c;大多数人都是由自己来设计他们的职业生涯的。 无论你正要启程&#xff0c;还是已经奋斗多年&#xff0c;以下内容都会对您的职业生涯有所助益。 目录 几条重要的职业规划提示。 1. 学习的步伐不停止 2. 学会问、学会听&#xff0c;学会学习…

iOS--viewController

隐藏状态栏 1 -(BOOL)prefersStatusBarHidden{ 2 return YES; 3 } 转载于:https://www.cnblogs.com/chebaodaren/p/5367160.html

jsf 开发_JSF开发人员应该知道的5种有用方法

jsf 开发这篇文章的目的是总结一些JSF开发人员可以在日常工作中使用的便捷方法。 实用程序类是将所有方法放在一起的好地方。 我会称此类为FacesAccessor。 第一种方法可能是最常用的方法。 它以给定名称返回托管bean。 必须按faces-config.xml或注释注册该bean。 注入是好的&a…

程序员应该如何规划自己的人生与书写履历?

今天,甚至过去,大多数人都是由自己来设计他们的职业生涯的。 无论你正要启程,还是已经奋斗多年,以下内容都会对您的职业生涯有所助益。几条重要的职业规划提示。1. 学习的步伐不停止 古人说,活到老,学到老。终身学习应该是您的座右铭。 世界在不断变化,每个人都在寻找各…

浅谈多线程——NSThread

上一篇文章中我们大致了解了GCD的模式和方法&#xff0c;在iOS开发中除了GCD之外&#xff0c;还有NSThread和NSOperation两种多线程方式。 1.NSThread - a - 使用NSThread开辟多线程进行子任务处理&#xff1a;类方法和初始化方法 使用类方法不需要创建对象就可以直接开辟多线程…

小程序思考与回答

1.全局scss $:考虑引入 4.import url 引入css 的区别 5.uniapp 中不需要scope 页面样式也不会相互影响&#xff1f; 6.文件上传 oss? 二、引入qs这个库&#xff0c;更好的处理网络请求传参。 三、图片文件转为base64 好处&#xff1a; 1、减少了下载图片的http请求数&#x…

2021年程序员可以做哪些副业?

哈喽&#xff0c;大家好&#xff0c;我是孙叫兽&#xff0c;本期内容给大家分享程序员搞副业的一期节目&#xff0c;欢迎大家一起学习。 1.程序员为什么要做副业&#xff1f; 副业意味着自由 时至今日&#xff0c;仍然有一大群程序员还天真地认为从事副业是一种压迫。但事实是&…

学习Apache Camel –实时索引推文

在大多数软件开发项目中&#xff0c;有一点需要使应用程序开始与其他应用程序或第三方组件通信。 无论是发送电子邮件通知&#xff0c;调用外部api&#xff0c;写入文件还是将数据从一个地方迁移到另一个地方&#xff0c;您都可以推出自己的解决方案或利用现有框架。 对于Jav…

【坑】执行Consumer的时候发生java.net.UnknownHostException错误

【时间】&#xff1a; 2016/4/8 17:30 【问题】&#xff1a; kafka执行Consumer实例的时候&#xff0c;发生了一下错误。 kafka配置文件server.properties如下&#xff1a; zookeeper配置文件zoo.cfg内容如下&#xff1a; consumer的实现代码如下&#xff1a; 其中静态类的定义…

如何上架自己的应用到各大应用商店?

大家好&#xff0c;我叫孙叫兽&#xff0c;本期给大家分享的内容是如何上架自己的应用到应用商店&#xff0c;感谢大家的阅读&#xff01;1.上架各大应用商店需要准备哪些材料&#xff1f;上架各大安卓应用商店&#xff08;腾讯应用宝、阿里应用商店、百度手机助手、华为应用市…

ifram 表单post 方法免密登录的实现

iframe默认使用的是get请求,所以外面要使用form表单的post请求实现免密码跳转系统。 html写法: <!DOCTYPE html> <html><head><meta charset="utf-8"><title>使用iframe的post请求提交网页</title></head><style>…

时间复杂度和空间复杂度[数据结构]

參考&#xff1a;本文为小甲鱼教学视频的学习笔记。 1、为什么要学习时间复杂度和空间复杂度&#xff1f;你说一个算法好另外一个算法不好&#xff0c;有什么推断根据&#xff1f;哪个算法效率高&#xff1f;怎么推断&#xff1f;那么就要学习时间和空间复杂度了。思考&#xf…

js编码解码decodeURI()与decodeURIComponent()的区别

区别&#xff1a; encodeURIComponent()对/?:&$,#进行编码&#xff0c;encodeURI()不会 如果url的query和path传参中含有这些字符会被不正确的截断&#xff0c;拿到的参数会是错误的&#xff0c;一般都会用encodeURIComponent()进行编码、decodeURIComponent进行解码 en…

gitlab将分支代码合并到master上

1、首先在test分支上进行git add .git commit -m "test"git push 2、切换到master上git checkout mastergit merge test git push

堆栈跟踪 堆栈跟踪_过滤日志中无关的堆栈跟踪行

堆栈跟踪 堆栈跟踪我喜欢堆栈痕迹。 不是因为我喜欢错误&#xff0c;而是因为发生错误的那一刻&#xff0c;堆栈跟踪是无价的信息源。 例如&#xff0c;在Web应用程序中&#xff0c;堆栈跟踪向您显示完整的请求处理路径&#xff0c;从HTTP套接字到过滤器&#xff0c;Servlet&am…

js检测数组对象中是否有重复值

判断数组对象里的某个值是否都是同一个值 isRepeat(arr)> {var hash {};for(let i0;i<arr.length;i){if (!hash[arr[i].externalUserId]) {hash[arr[i].externalUserId] true;}}if(Object.keys(hash).length<arr.length){return true}else{return false}}isRepeat(a…

关于phpcmsv9更新缓存出现链接被重置的问题

今天安装phpcmsv9后更新缓存出现链接被重置的错误&#xff0c;。。找了半天原因。。。原来是apache配置里面的keepAlive显示的是off,,应该将其改为on...然后重新启动apache.... 转载于:https://www.cnblogs.com/yxwkf/p/5373718.html

VUE使用vue-seamless-scroll自动滚动表格数据,对表格数据排序无效的解决办法

使用vue-seamless-scroll循环表格数据&#xff0c;建议使用v-for,ul li 的形式便于操作属性&#xff0c;elemengt ui table可能不好处理兼容性问题及属性设置&#xff0c;尤其是一个页面添加多个表格及效果。 VUE : 排序 this.$refs.seamlessScroll.reset() 效果图