V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
ecloud
V2EX  ›  Python

基于 python 的 HTTP 测试框架求助

  •  
  •   ecloud ·
    yecloud · 2016-07-26 22:59:09 +08:00 via iPhone · 3755 次点击
    这是一个创建于 3040 天前的主题,其中的信息可能已经有所发展或是发生改变。
    服务器为 HTTP ,非 web
    想用 python 完成集成测试和压力 /性能测试(通过调服务器的各种 HTTP 接口)
    有没有现成的框架直接拿来用?不是指 HTTP 框架,而是测试框架。很容易配置测试用例,数据驱动,模拟多客户请求,并发,定时,定量,结果统计等
    第 1 条附言  ·  2016-08-03 11:11:33 +08:00
    更新一下状态,现在已经使用 Locust 建立了测试框架,相当满意。正在写对应每个 HTTP 接口的 driver 。强烈推荐这个工具,非常适合针对各种接口(不光是 HTTP )的测试,可以模拟多用户多并发,并且支持分布式部署,自定义返回内容的逻辑处理,根据逻辑处理结果产生成功或者失败状态,列入统计。等忙过这阵子我会写一篇详细介绍的文章。
    10 条回复    2016-07-27 18:03:49 +08:00
    neo1218
        1
    neo1218  
       2016-07-26 23:06:27 +08:00
    https://github.com/JoeDog/siege
    我用的感觉蛮好的
    ecloud
        2
    ecloud  
    OP
       2016-07-26 23:20:33 +08:00 via iPhone
    @neo1218 看了一下 readme ,比较接近我的需求,但是里面主要提的是压力测试这块。我还需要的是将 HTTP 的返回内容进行解析,取得业务逻辑相关数据,判断是否符合预期。有的业务逻辑是需要几次 HTTP 的来回才能算作一个测试用例。但是我在 readme 里并没有看到相关内容。
    换个说法,我想要个以 python 为脚本语言,命令行版的,简化版的 loadrunner/RPT
    lecher
        3
    lecher  
       2016-07-26 23:42:54 +08:00
    用 tornado 去写吧。
    tornado 的 asyncHTTPClient 可以快速写出并发效果的业务。
    同时还可以做到对返回数据做检测、分析和结果入库。

    唯一不好的就是需要自己写调度并发数量的逻辑。

    这个是 tornado 写的测试框架,可以借鉴。
    https://github.com/Damon-wenc/Auto-Test-Framework

    关于 python 的其他测试框架。
    https://github.com/jobbole/awesome-python-cn/blob/master/README.md
    rainysia
        4
    rainysia  
       2016-07-27 02:45:32 +08:00   ❤️ 1
    系统级性能的, stress
    性能级的, siege, jmeter
    模拟的, locust
    llbgurs
        5
    llbgurs  
       2016-07-27 08:17:22 +08:00
    python 的测试框架 + request 不行吗?
    ecloud
        6
    ecloud  
    OP
       2016-07-27 12:00:52 +08:00
    @rainysia 看了 locust ,感觉不错,准备试试
    SlipStupig
        7
    SlipStupig  
       2016-07-27 15:28:32 +08:00
    不是应该用 selenium 么,前端后端都能喝一起测试
    alphadog619
        8
    alphadog619  
       2016-07-27 16:11:47 +08:00
    @SlipStupig selenium 用来做功能测试的
    ecloud
        9
    ecloud  
    OP
       2016-07-27 16:13:01 +08:00
    @SlipStupig 都说过了,不是 web
    ecloud
        10
    ecloud  
    OP
       2016-07-27 18:03:49 +08:00
    初步看了一下,决定用 Locust 了
    优点:测试用例管理,多端、多用户模拟,并发,多线程,有还算是比较详细的报告输出,并且主从模式所有数据汇总到主机的 HTML 报告中的,权重控制多样化, HTTP 返回值可以自行解析完后定义成功还是失败
    缺点:没有数据驱动(暂时只能硬编码到程序里读取一个固定的数据文件 /DB ,以后考虑给它写个扩展吧)
    算是基本上满足了 85%的需求了吧
    Locust 这东西的确是比较适合针对 RESTful 的 HTTP 服务器进行接口测试和压力 /性能测试的工具
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4504 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 04:03 · PVG 12:03 · LAX 20:03 · JFK 23:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.