自动化测试框架Taffy

Taffy

Taffy是基于nosetests的自动化测试框架。

Taffy主要用来测试后台服务(包括且不限于Http, Dubbo/hessian, Webservice, Socket等类型接口),也可集成Selenium, Appium进行WEB或APP的自动化测试,或集成locust进行性能测试。

Taffy封装实现了结果对比,配置读取,DB/Redis操作,数据加解密等接口。

1. 运行环境

  • macOS,linux,windows
  • nose 1.3.7
  • python 2.7

2. 项目结构

  1. config 配置文件
  2. Tests 测试用例
  3. Util 工具类
    • checkTool 比较方法及结果校验
    • commonTool 配置文件读取
    • DBTool 数据库操作(mysql,sqlserver)
    • hessianTool hessian接口调用
    • httpTool http接口调用
    • locustTool locust性能框架
    • OATool 正交表设计测试用例
    • redisTool redis操作(支持redis及redis cluster)
    • securityTool 数据加解密
    • seleniumTool selenium PageObject对象封装
    • webserviceTool webservice接口调用

3. 环境部署

3.1 Python

请下载安装Python2.7.x版本:

https://www.python.org/downloads/

3.2 IDE

推荐使用PyCharm:

官网地址:http://www.jetbrains.com/pycharm/

下载安装完成后,注册时选择License server,输入:http://idea.imsxm.com

即可激活^^

3.3 Lib

requirements.txt 中存放了Taffy用到的第三方lib库,可以通过setup.py进行最大化、最小化及自定义模块安装配置:

# 默认最大化安装(安装全部模块)
$ python setup.py

# -m或--min,最小化安装(只安装必须的nose,requests,PyYAML等)
$ python setup.py -m

# -w或--without A B,不安装模块A,B
# 示例:不安装db redis locust模块
$ python setup.py --without db redis locust

# --with A B,在最小化安装基础上,只安装模块A,B
# 示例:只安装db redis locust模块
$ python setup.py --with db redis locust

# 其中,--with及--without选项支持的模块列表为:[redis,security,db,webservice,selenium,locust,hessian]

# -h或--help,查看帮助
$ python setup.py -h

当默认最大化安装全部模块时,Windows系统下一些棘手的lib安装方法:

  1. mysql-python

    1. 首先安装Microsoft Visual C++ Compiler for Python 2.7:http://aka.ms/vcpython27

    2. 然后下载msi包安装:MySQL for Python - Browse /mysql-python/1.2.3 at SourceForge.net

  2. pymssql

    可直接下载exe包安装: pymssql · PyPI

    python2.7+32位windows系统,请选择:pymssql-2.1.1.win32-py2.7.exe (md5)

  3. webdriver

    这里只说下chromedriver的下载配置方法:

    1. 下载地址:https://sites.google.com/a/chromium.org/chromedriver/downloads

    2. 下载chromedriver_win32.zip,解压后将chromedriver.exe放到Python安装路径下(如C:\Python27\)

3.4 PyCharm配置

  1. 运行PyCharm,打开下载的项目:taffy

  2. 「File」–>「Settings 」–>「Project:Taffy」->「Project Interpreter」,配置Python interpreter为当前python版本安装目录

  3. 「File」–>「Settings 」–>「Tools」->「Python Integrated Tools」–>「Nosetests」,配置Default test runner为Nosetests

  4. 「Run」–>「Edit Configurations」–>「Defaults」->「Python」,配置Python interpreter为当前python版本安装目录

  5. 「Run」–>「Edit Configurations」–>「Defaults」->「Python tests」–>「Nosetests」,配置Python interpreter为当前python版本安装目录,并在Interpreter options中填入-s用以显示nose运行及调试信息

4. 测试编写执行及报告导出

4.1 功能自动化测试

4.1.1 测试编写

taffy目前只支持nose方式编写测试用例,详见附录7-2

后续若有需求,可扩展支持其他方式,如以excel,csv,yaml等数据驱动形式保存用例

4.1.2 测试执行

可以使用两种方式执行功能自动化测试脚本:

  1. 图形用户界面GUI

    在PyCharm中,选中测试文件,如Tests/test_demo.py

    鼠标右键选择Run 'Nosetests in test_demo.py'即可执行测试

    注1:也可使用快捷键:Ctrl+Shift+F10

    注2:在脚本里使用快捷键Ctrl+Shift+F10,会单独执行选中的test class或test func

  2. 命令行界面CLI

     在PyCharm下方Terminal终端中,输入命令执行测试:

# 执行测试文件test_demo.py
$ nosetests -v Tests/test_demo.py

# 单独执行测试文件test_demo.py中测试类test_demo下的test_http测试方法
$ nosetests -v Tests/test_demo.py:test_demo.test_http

更多nosetests运行选项,请参考nostests官方文档

4.1.3 测试报告

功能自动化测试执行完成后,在Pycharm左下方Run窗口的Testing toolbar中,选择“Export Test Results”按钮即可导出测试报告

详见《PyCharm运行Nosetests并导出测试报告》

4.2 性能测试

4.2.1 配置config/locust.yml

4.2.2 运行locust

运行test_locust.py生成locustfile及执行性能测试,命令如下:

$ cd Taffy\Tests
$ python test_locust.py

4.2.3 测试报告

  1. 普通模式

    locust以普通模式运行时,可在web页面实时查看运行结果,包括请求数,响应时间,RPS,失败率等

    测试执行完成后可在WEB页面下载CSV格式测试报告(选择Download Data -> Download response time distribution CSV)

  2. no-web模式

    locust以no-web模式运行时,csv格式数据会定时保存在运行目录下,如locust_distribution.csv和locust_requests.csv

  Taffy集成locust性能测试框架使用说明,详见附录7-1

​现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:485187702【暗号:csdn11】

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走! 希望能帮助到你!【100%无套路免费领取】

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Typora 主题配置

title: Typora主题配置 search: 2024-03-19 tags: “#Typora主题” Typora 主题配置 文章目录 Typora 主题配置Step-1 进入官方主题网站Step-2 选中主题,并点击DownloadStep-3 跳转到 github 网站Step-4 直接下载源码Step-5 解压下载的源码Step-6 找到下载源码中的…

搜索树概念及操作

目录 一. .搜索树 1.1 概念 1.2 操作1 查找 1.3 操作2 插入 1.4 操作3 删除 1.5 性能分析 1.6 和 java 类集的关系 一. .搜索树 1.1 概念 二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树 : 若它的左子树不为空&#x…

Automatic Prompt Engineering

让大模型自己生成prompt,生成提示(prompt)存在两种不同的操作方式。第一种方式是在文本空间中进行,这种提示以离散的文本形式存在。第二种方式是将提示抽象成一个向量,在特征空间中进行操作,这种提示是抽象…

二进制日志备份与恢复

二进制备份是 MySQL 数据库备份的一种方式,它通过记录数据库的所有更改操作,以二进制格式保存,实现对数据库的增量备份和恢复。binlog_format 是 MySQL 中用来指定二进制日志格式的参数,有三种常见的选项:STATEMENT、R…

【PLC】PROFIBUS(二):总线协议DP、PA、FMS

1、总线访问协议 (FDL) 1.1、多主通信 多个主设备间,使用逻辑令牌环依次向从设备发送命令。 特征: 主站间使用逻辑令牌环、主从站间使用主从协议主站在一个限定时间内 (Token Hold Time) 对总线有控制权从站只是响应一个主站的请求它们对总线没有控制…

spring-boot-devtools配置和原理

一、前言 昨天,一个同事Eclipse在启动SpringBoot项目时一直不停地加载,后来发现是因为spring-boot-devtools造成的问题,因为我们把日志输出的目录设置在当前项目里(~/mnt/logs/,这样设置是因为mac电脑没有根目录权限&…

Django之Web应用架构模式

一、Web应用架构模式 在开发Web应用中,有两种模式 1.1、前后端不分离 在前后端不分离的应用模式中,前端页面看到的效果都是由后端控制,由后端渲染页面或重定向,也就是后端需要控制前端的展示。前端与后端的耦合度很高 1.2、前后端分离 在前后端分离的应用模式中,后端仅返…

树状数组的三种代码模板

下标从一开始。 所有奇数等于本身,偶数/2等于所在层数。 二进制末尾有几个0就在第几层。 每一个树状数组中表示的都是这么一个区间的和,左开右闭。 写成lowbit(x),返回的就是2^k,k就是末尾有几个0。 这是求和代码 单点修改 这是…

案例 | 华院计算x第一财经:我和我的数智人唱双簧

创新关乎命运,科技引领未来。生成式人工智能(AIGC)给传媒行业发展带来严峻挑战的同时,也带来千载难逢的重大发展机遇。2024年政府工作报告中提出,要深化大数据、人工智能等研发应用,开展“人工智能”行动,打造具有国际…

龙泉寺扫地僧:十年坚持打造轻量级浏览器内核

王斌,网名龙泉寺扫地僧。作为一个独立开发者,他专注于浏览器内核研究十余年。他主要从事 MiniBlink 项目的工作,旨在创建一个精简且高效的浏览器内核,应对 Chromium 庞大的体积和内存占用问题。 龙泉寺扫地僧在谈及做 MiniBlink 的…

10个你必须知道的浏览器指纹检测工具,保护你的隐私安全

在当前的数字时代,个人隐私保护变得越来越重要,特别是对于互联网用户来说。有一种叫做“浏览器指纹”的技术,它能悄悄收集我们使用的浏览器和设备的各种细节信息。这本是为提供个性化服务,但对那些需要在不同平台同时管理多个账号…

11.数据库技术(下)

1.select语句 中括号表示可有可无; 尖括号表示变量名; 分组后再筛选,用having;分组前筛选,用where; select后跟随的所有列,除聚集函数外,都需要列在group by后; 注&…

【比特币】比特币的奥秘、禁令的深层逻辑与风云变幻

导语: 比特币(Bitcoin),这个充满神秘色彩的数字货币,自诞生以来便成为各界瞩目的焦点。它背后所蕴含的Mining机制、禁令背后的深层逻辑以及市场的风云变幻,都让人欲罢不能。今天,我们将深入挖掘比特币的每一个角落&…

HarmonyOS应用/元服务发布流程

在发布HarmonyOS应用/元服务前,建议您在本地进行调试,以查看和验证应用/元服务运行效果,减少发布过程中可能遇到的问题。 华为支持您使用HUAWEI DevEco Studio自动化签名的方式对应用/元服务进行调试,总体流程如下。 配置签名信息…

蓝桥杯练习系统(算法训练)ALGO-967 共线

资源限制 内存限制:256.0MB C/C时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s 问题描述 给定2维平面上n个整点的坐标,一条直线最多能过几个点? 输入格式 第一行一个整数n表示点的个数   …

c语言--跳出continue、break

C 语言中的 continue 语句有点像 break 语句。但它不是强制终止,continue 会跳过当前循环中的代码,强迫开始下一次循环。 对于 for 循环,continue 语句执行后自增语句仍然会执行。对于 while 和 do…while 循环,continue 语句重新…

CI860K01 3BSE032444R1 参数说明书

ABB CI860K01 3BSE032444R1是一款ABB公司生产的通信接口模块。 这款模块是专为工业自动化环境设计的,能够在各种设备之间提供稳定和可靠的数据传输接口。它采用了先进的通信技术和严格的生产工艺,确保了产品的高质量和性能。此外,它的设计合…

antdp | 菜单展示-菜单路由配置

扩展的路由配置 Layout 插件会基于 umi 的路由,封装了更多的配置项,支持更多配置式的能力。新增: 侧边栏菜单配置布局路由级别展示 / 隐藏相关配置与权限插件结合,配置式实现权限路由的功能 示例如下: //config/rou…

抗干扰段码屏驱动芯片/ LCD液晶屏驱动/仪器仪表液晶驱动IC-VK1C21D/DA FAE支持

产品型号:VK1C21D/DA 产品品牌:永嘉微电/VINKA 封装形式:SOP28/SSOP28 可定制裸片:DICE(COB邦定片);COG(邦定玻璃用) 工程服务,技术支持! 概述: VK1C21D/DA是一个点阵式存储映射…

PTA金字塔游戏

幼儿园里真热闹,老师带着孩子们做一个名叫金字塔的游戏,游戏规则如下: 首先,老师把孩子们按身高从高到矮排列,选出最高的做队长,当金字塔的塔顶,之后在其余小朋友里选出两个最高的,…