Taffy

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

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

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

基本用法可以参考Tests/目录下示例demo.

Github地址:https://github.com/lovesoo/Taffy

QQ交流群:25452556

0. 更新记录

20171030 v1.6 支持模块自定义配置安装,详见setup.py

20171015 v1.5 新增《Taffy入门教学视频

20171010 v1.4 支持分布式模式运行locust

20171009 v1.3 统一配置文件格式为YAML

20170928 v1.2 集成locust,同一脚本可同时进行功能自动化及性能测试,详见附录7-1

20170922 v1.1 集成selenium,新增相关测试demo

20170920 v1.0 第一个版本发布,支持http/hessian/webservice等类型接口功能自动化测试,并提供相关Util工具类

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包安装:https://sourceforge.net/projects/mysql-python/files/mysql-python/1.2.3/

  2. pymssql

    可直接下载exe包安装: https://pypi.python.org/pypi/pymssql/2.1.1#downloads

    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

5. 参考资料

  1. http://nose.readthedocs.io/en/latest/index.html

  2. https://docs.python.org/dev/library/unittest.html

  3. https://docs.locust.io/en/latest/

  4. http://www.cnblogs.com/yufeihlf/p/5764099.html

6. 联络方式

  QQ交流群:25452556

自动化测试框架Taffy的更多相关文章

  1. Taffy自动化测试框架简介

    Taffy Taffy是基于nosetests的自动化测试框架. Taffy主要用来测试后台服务(包括且不限于Http, Dubbo/hessian, Webservice, Socket等类型接口) ...

  2. Taffy自动化测试框架Web开发,Python Flask实践详解

    1. 前言 最近为Taffy自动化测试框架写了个页面,主要实现了用例管理.执行,测试报告查看管理.发送邮件及配置等功能.   本页面适用所有基于taffy/nose框架编写的自动化测试脚本,或基于un ...

  3. 避免重复造轮子的UI自动化测试框架开发

    一懒起来就好久没更新文章了,其实懒也还是因为忙,今年上半年的加班赶上了去年一年的加班,加班不息啊,好了吐槽完就写写一直打算继续的自动化开发 目前各种UI测试框架层出不穷,但是万变不离其宗,驱动PC浏览 ...

  4. [转]Android Studio 里搭建自动化测试框架Robotium

    Android的自动化测试框架可选择的不多,后来选了Robotium(https://code.google.com/p/robotium/),它的语法及易用性挺像我们用在iOS里的KIF. 官方文档 ...

  5. 基于Ruby的Watir-WebDriver自动化测试框架

    基于Ruby的watir-webdriver自动化测试方案与实施(五)   基于Ruby的watir-webdriver自动化测试方案与实施(四)   基于Ruby的watir-webdriver自动 ...

  6. Windows下部署Appium教程(Android App自动化测试框架搭建)

    摘要: 1,appium是开源的移动端自动化测试框架: 2,appium可以测试原生的.混合的.以及移动端的web项目: 3,appium可以测试ios.android.firefox os: 4,a ...

  7. IntelliJ IDEA 自动化工具安装并添加自动化测试框架

    IntelliJ IDEA是一个用于开发人员开发和测试人员自动化测试的测试工具,类似于eclipse. 优点:插件多自身可以携带,自身携带cucumber自动化测试框架,类似于junit一样 缺点:r ...

  8. Selenium自动化测试框架介绍

    Selenium自动化测试框架介绍 1.测试架构作用 a.可维护性 b.提高编写脚本效率 c.提高脚本的可读性 2.框架的几大要素: Driver管理,脚本,数据,元素对象,LOG,报告,运行机制,失 ...

  9. UiAutomator自动化测试框架介绍

    UiAutomator自动化测试框架介绍 环境搭建 1         必要条件 1.1       JDK 1.2       SDK(API高于15) 1.3       Eclipse 2    ...

随机推荐

  1. 写Java代码的一些小技巧

    写Java代码有三年多了,遇到过很多坑,也有一些小小的心得.特地分享出来供各位学习交流.这些技巧主要涉及谷歌Guava工具类的使用.Java 8新特性的使用.DSL风格开发.代码封装等技巧. 一.nu ...

  2. 【第一章】 第一个spring boot程序

    环境: jdk:1.8.0_73 maven:3.3.9 spring-boot:1.2.5.RELEASE(在pom.xml中指定了) 注意:关于spring-boot的支持, 最少使用jdk7(j ...

  3. triggerHandler不执行事件默认值

    <input type="text" /> $('input').triggerHandler('focus');

  4. 常用字符与ASCII代码对照表

    常用字符与ASCII代码对照表 为了便于查询,以下列出ASCII码表:第128-255号为扩展字符(不常用) ASCII码 键盘 ASCII 码 键盘 ASCII 码 键盘 ASCII 码 键盘 27 ...

  5. Unity3D学习笔记(十):Physics类和射线

    物理系统:碰撞器.触发器等 力:有大小有方向的矢量,有受力点位置(和向量的区别) ----F = ma(m质量,a加速度,质量越大,加速度越小,停下来越慢) ----m1v1 = m2v2(冲量守恒定 ...

  6. 【TCP/IP详解 卷一:协议】第十二章 广播与多播 ping实验

    我手机连接到wifi上所分配到的IP地址:192.168.1.116 子网掩码:255.255.255.0 路由器:192.168.1.1 ping 192.168.1.116 (ping 一台主机的 ...

  7. NS3 Ptr<Rocket> 与 TcpRocket 的一个小问题

    前因:ns3网络仿真 实验进行到很关键的一步,我尝试进行了代码的编写(还没有添加Traceback的函数),如下: #include "ns3/core-module.h" #in ...

  8. BZOJ 1010: [HNOI2008]玩具装箱toy(斜率优化dp)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1010 题意: 思路: 容易得到朴素的递归方程:$dp(i)=min(dp(i),dp(k)+(i-k ...

  9. python 字符串输出转义{}

    >>> print ("{} 对应的位置是 {{0}}".format("runoob")) runoob 对应的位置是 {}

  10. ZZZ_整理的结构

    A.头尾 添加/移除 B.随机存取 C.数据存取 1.构造函数 2.赋值 3.迭代器操作 4.插入 5.删除 6.交换 7.大小 8.查找