接口测试 自动化测试框架 Taffy

lovesoo · 发布于 2017年10月11日 · 最后由 lovesoo 回复于 2017年10月15日 · 962 次阅读

Taffy

Taffy is a Test Automation Framework based on nosetests.

Taffy is usesd mainly to test interface including Http, dubbo/hessian, Webservice, Socket and etc.

Taffy also provided encapsulation and realized the interfaces of data check, config read, DB / redis operations, data encryption / decryption and etc.

The basic useage can be found at Tests/ folder.

Taffy是基于nosetests的自动化测试框架。Github地址:https://github.com/lovesoo/Taffy

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

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

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

QQ交流群:25452556

0. 更新记录

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. 环境部署

1) Python

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


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

2) IDE

推荐使用PyCharm


http://www.jetbrains.com/pycharm/

3) 第三方lib

Taffy/requirements.txt文件 中存放了Taffy用到的第三方lib,可以使用pip直接安装:

```
#批量安装
pip install -r requirements.txt

#可以单独安装xxxlib
pip install xxxlib
```

Windows下,一些棘手的lib安装方法:

1) mysql-python

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

然后下载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的下载配置方法:

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

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

4) PyCharm配置

a) 运行PyCharm,打开下载的项目:taffy

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

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

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

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

1) 功能自动化测试

a) 测试用例编写

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

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

b) 测试执行

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

i) 图形用户界面GUI

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

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

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

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

ii) 命令行界面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官方文档

c) 测试报告

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

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

2) 性能测试

a) 配置config/locust.yml

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


$ cd Taffy\Tests
$ python test_locust.py

c) 测试报告

i) 普通模式

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

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

ii) 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

共收到 9 条回复
6853

看文档感觉用起来挺复杂的感觉,要装好多的依赖

3439

建议删去激活License

F4d2c5
lovesoo · #3 · 2017年10月12日 作者
6853codeskyblue 回复

是的,还没想到更好的方案。
因为接口自动化测试需要去数据库,redis或者其他地方获取数据进行结果校验,所以必须要用到那些相关的lib。

F4d2c5
lovesoo · #4 · 2017年10月12日 作者
3439apert 回复

好的,我删了😪

3d19a1

可以按业务串联接口做自动化和压测么?

F4d2c5
lovesoo · #6 · 2017年10月12日 作者
3d19a1gyyfifafans 回复

可以啊~

48a790

locust性能测试,跟lr和jmeter测试相比较,有哪些优势呀?准确度怎么样?

48a790

很想学习自动化,一直不知道怎么入门,网上有很多零碎的资料,看的也是云里雾里的,看到你的文章,挺系统的,哈哈,感觉又有劲学习了!

F4d2c5

录制了一个Taffy的入门教学视频😊http://v.youku.com/v_show/id_XMzA4NTk2MDI5Mg==.html

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册