性能测试框架Multi-Mechanize安装与使用
python模块介绍- multi-mechanize 通用的性能测试工具
简介
Multi-Mechanize 是一个开源的性能和负载测试框架,它并发运行多个 Python 脚本对网站或者服务生成负载(组合事务)。测试输出报告保存为HTML或JMeter的兼容的XML。Multi-Mechanize最常用于web性能和可扩展性(scalability)测试,也适用于任何python可以访问的API。尤其适合后台性能测试。稍微懂点编程的话,这个工具会远强过商业的性能测试工具。
github:https://github.com/cgoldberg/multi-mechanize
主要特性:
- 支持各种 HTTP methods
- 高级超链接和HTML表单支持
- 支持 SSL
- 自动处理 Cookies
- 可设置HTTP头
- 自动处理重定向
- 支持代理
- 支持 HTTP 认证
安装
pip install multi-mechanize mechanize numpy matplotlib
- mechanize是一个模拟browser行为的一个库,当然你也可以用其它的如urllib2、request、tornado.httpclient等等库,不是必须。
- 后面两个numpy和matplotlib也是可选的,当你需要它自动生成图形化报表时才会用到,安装matplotlib你的系统有可能需要安装libpng和freetype库
pip install multi-mechanize mechanize numpy matplotlib
- mechanize是一个模拟browser行为的一个库,当然你也可以用其它的如urllib2、request、tornado.httpclient等等库,不是必须。
- 后面两个numpy和matplotlib也是可选的,当你需要它自动生成图形化报表时才会用到,安装matplotlib你的系统有可能需要安装libpng和freetype库
2. 使用方法
- 创建项目
multimech-newproject my_test
自动创建一个my_test目录,子目录test_scripts用来放测试脚本,config.cfg是测试配置,主要要配的是测试时间、测试脚本和并发threads量。
执行项目
# multimech-run my_test user_groups: 2
threads: 6 [================100%==================] 30s/30s transactions: 119 timers: 119 errors: 0
waiting for all requests to finish... analyzing results... transactions: 125
errors: 0 test start: 2013-09-13 11:47:47
test finish: 2013-09-13 11:48:16 created: ./my_test/results/results_2014.12.23_15.24.40/results.html done.
目录结构
每个测试项目包含以下内容:
- config.cfg的配置文件。用于设定测试选项。
- test_scripts/虚拟用户脚本的目录。在这里添加您的测试脚本。
- results/:结果存储目录。对于每个测试都声称一个时间戳目录,里面包含结果的报告。
配置参数的含义如下:
- run_time: duration of test (seconds) 测试的执行时间
- rampup: duration of user rampup (seconds) 多少秒内发完请求
- results_ts_interval: time series interval for results analysis (seconds) 结果分析时间
- progress_bar: turn on/off console progress bar during test run 是否显示进度条
- console_logging: turn on/off logging to stdout 是否输出到stdout
- xml_report: turn on/off xml/jtl report 是否生成xml报告。
- results_database: database connection string (optional) 保存结果的数据库连接字符串(可选)
- post_run_script: hook to call a script at test completion (optional) 调用的善后脚本(可选)
脚本书写
下例使用mechanize进行web测试。
class Transaction(object):
def __init__(self):
pass def run(self):
br = mechanize.Browser()
br.set_handle_robots(False)
resp = br.open('http://example..com')
assert (resp.code == 200), 'Bad Response: HTTP %s' % resp.codes
assert ('service name' in resp.get_data())下面用httplib库重写脚本,并增加定时器。通过定时器,可以分析各个步骤的耗时。
import httplib
import urllib
import time class Transaction(object):
def __init__(self):
self.custom_timers = {} def run(self):
post_body=urllib.urlencode({
'USERNAME': 'corey',
'PASSWORD': 'secret',})
headers = {'Content-type': 'application/x-www-form-urlencoded'} start_timer = time.time()
conn = httplib.HTTPConnection('www.example.com')
conn.request('POST', '/login.cgi', post_body, headers)
resp = conn.getresponse()
content = resp.read()
latency = time.time() - start_timer self.custom_timers['LOGIN'] = latency
assert (resp.status == 200), 'Bad Response: HTTP %s' % resp.status
assert ('Example Web Page' in content), 'Text Assertion Failed'下面是requests库重写脚本,并增加定时器。通过定时器,可以分析各个步骤的耗时。
- import requests
- import time
- class Transaction(object):
- def run(self):
- start = time.time
- r = requests.get('http://172.16.34.199:10080/EnvService/services/personservice/login?personid=weijian1&password=weijian1')
- latency = time.time() - start_timer
- self.custom_timers['LOGIN'] = latency
- assert (r.status_code == 200), 'Bad Response: HTTP %s' % r.status_code

性能测试框架Multi-Mechanize安装与使用的更多相关文章
- Python 3.6 性能测试框架Locust安装及使用
背景 Python3.6 性能测试框架Locust的搭建与使用 基础 python版本:python3.6 开发工具:pycharm Locust的安装与配置 点击“File”→“setting” 点 ...
- Python Locust性能测试框架实践
[本文出自天外归云的博客园] Locust的介绍 Locust是一个python的性能测试工具,你可以通过写python脚本的方式来对web接口进行负载测试. Locust的安装 首先你要安装pyth ...
- Xvfb+YSlow+ShowSlow搭建前端性能测试框架 - 前端技术 | TaoBaoUED
Xvfb+YSlow+ShowSlow搭建前端性能测试框架 - 前端技术 | TaoBaoUED Xvfb+YSlow+ShowSlow搭建前端性能测试框架 作者:黑三 | 时间:2010-07-07 ...
- 基于Jmeter和Jenkins搭建性能测试框架
搭建这个性能测试框架是希望能够让每个人(开发人员.测试人员)都能快速的进行性能测试,而不需要关注性能测试环境搭建过程.因为,往往配置一个性能环境可能需要很长的时间. 1.性能测试流程 该性能测试框架工 ...
- Python3.6 性能测试框架Locust的搭建与使用
背景 Python3.6 性能测试框架Locust的搭建与使用 基础 python版本:python3.6 方法一: pip install locustio 方法二: 开发工具:pycharm 使用 ...
- 「转」基于Jmeter和Jenkins搭建性能测试框架
搭建这个性能测试框架是希望能够让每个人(开发人员.测试人员)都能快速的进行性能测试,而不需要关注性能测试环境搭建过程.因为,往往配置一个性能环境可能需要很长的时间. 1.性能测试流程 该性能测试框架工 ...
- chrome性能测试框架webpagereplay
今天学习了下chrome的性能测试框架,其实它可用于在稳定的环境下测试浏览器向服务器发起http请求至下载请求文档到本地的这个过程.好处在于,其原理在于先将第一次请求回来的文档下载在本地,然后在本地模 ...
- node.js框架express的安装
node.js框架express的安装 首先假定你已经安装了 Node.js,接下来为你的应用创建一个目录,然后进入此目录并将其作为当前工作目录. $ mkdir myapp $ cd myapp 通 ...
- 基于jmeter,jenkins,ANT接口,性能测试框架
背景 公司计划推接口和性能测试,搭建这个性能测试框架框架是希望能够让每个人(开发人员.测试人员)都能快速的进行性能,接口测试,而不需要关注性能测试环境搭建过程.因为,往往配置一个性能环境可能需要很长的 ...
- java 性能测试框架工具-junitperf
性能测试工具 对于 Java 开发者来说,要去学习性能测试工具未免很麻烦. 但有时候会有性能测试的需求. junitperf junitperf 就是一款为 Java 开发者设计的性能测试框架,如果你 ...
随机推荐
- SQL死锁
我们操作数据库大量数据时,可能会出现死锁现象. 所谓死锁: 是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去.此时称系统处于死锁状态或系统 ...
- 【HDU 2087 剪花布条】
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission( ...
- bzoj 2503 相框 分类讨论
题目大意:给定一张无向图,每次可以进行以下两种操作: 1.将一个点分裂成一些点,原先这个点连接的每条边任选一个新点进行连接 2.将两个度数为1的点合并为1个点 求将这个图变成一个环的最小操作次数 我们 ...
- Java.io.File中的delete()方法和deleteOnExit()方法的区别
1.delete()方法: 当调用delete()方法时,直接删除文件,不管该文件是否存在,一经调用立即执行: 2.deleteOnExit()方法: 当 ...
- node.js express配置允许跨域
app.all('*', function(req, res, next) { res.header("Access-Control-Allow-Origin", "*& ...
- 【linux高级程序设计】(第七章)终端及串口编程 未完成
一.端口设备类型 1.显示设备基本信息 cat /proc/tty/drivers 里面包括了: 当前终端:/dev/tty 前台控制台终端:/dev/console 用于创建虚拟终端的:/dev/p ...
- (一)为什么要学习docker
一.docker的历史与现状 1.PAAS平台的范围和内容 1.确定产品定位和需求,确定首次迭代的范围. 2.制作界面原型. 以下是 paas 范畴 .技术选型,然后根据技术选型为每个开发者搭建开发环 ...
- js-Flexbox盒子布局
这个年轻的时候,我在项目中其实很少用到: 现在老了,发现了他的好处,我就开始慢慢用到了: 但是其实我对他还是不熟悉的,很陌生,在此做个笔记,加油
- 牛客网 牛客练习赛13 C.幸运数字Ⅲ-思维
C.幸运数字Ⅲ 链接:https://www.nowcoder.com/acm/contest/70/C来源:牛客网 这个题447和477是特殊的,其他的就没什么了. 代码: 1 #i ...
- Codeforces 371D Vessels (模拟)
题目链接 Vessels 这道题我做得有点稀里糊涂啊==TLE了几发之后改了一行就A了. 具体思路就是记fi为若第i个容器已经盛不下水了,那么接下来盛水的那个容器. hi为若现在要给i号容器加水,当前 ...