zoukankan      html  css  js  c++  java
  • 自动化测试框架Taffy

    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 TaffyTests
    $ 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

  • 相关阅读:
    CentOS7.0安装Nginx 1.7.4
    Java If ... Else
    Java 布尔运算
    Java Math
    Java 运算符
    Java 数据类型
    Java 变量
    Java 注释
    Java 基本语法
    Java 简介
  • 原文地址:https://www.cnblogs.com/lovesoo/p/7719015.html
Copyright © 2011-2022 走看看