执行环境
- centos7
Locust
- 前面的帖子已经针对locust做了一个简单的介绍,这里将记录一下使用locust编写简单的压测脚本
- 适用环境: python 2.7,python 3.3,3.4,3.5和3.6
- 官网: http://docs.locust.io/
- 所需库: locustio
Multi-mechanize
- Multi-Mechanize 是一个开源的性能和负载测试框架,它并发运行多个 Python 脚本对网站或者服务生成负载(组合事务)。测试输出报告保存为HTML或JMeter的兼容的XML。Multi-Mechanize最常用于web性能 和可扩展性(scalability)测试,也适用于任何python可以访问的API。尤其适合后台性能测试。
- 适用环境: python 2.7,不支持python3
- 所需库(以centos为例):
- yum -y install gcc gcc-c++
- yum install python-matplotlib
- yum install freetype-devel libpng-devel
- yum install python-devel
- pip install multi-mechanize mechanize numpy matplotlib
Flask
- Flask是一个使用 Python 编写的轻量级 Web 应用框架。其 WSGI 工具箱采用 Werkzeug,模板引擎则使用 Jinja2。
- 适用环境: python 2.6,2.7,python3.3,3.4,3.5
- 官网文档:http://docs.jinkan.org/docs/flask/index.html
- 所需库:flask
脚本编码
编写简单的flask服务
实现功能:生成5位随机数
123456789101112131415# !/usr/bin/env python# -*- coding :utf-8 -*-from flask import Flaskimport randomapp = Flask(__name__)def getnum():numuid = str(random.randint(10000, 99999))return numuidif __name__ == '__main__':app.run(host='0.0.0.0', debug=True)启动:yourip:5000/getnum
编写简单的locust压测脚本
实现功能:get请求flask的numid
123456789101112131415161718# -*- coding:utf-8 -*-from locust import HttpLocust, TaskSet, taskclass WebsiteTasks(TaskSet):def on_start(self):passdef getuser(self):self.client.get("/getnum")class WebsiteUser(HttpLocust):task_set = WebsiteTasksmin_wait = 5000max_wait = 15000host = "http://yourip:5000"启动: locust -f filename.py
编写简单的multi-mechanize压测脚本
实现功能:get请求flask的numid
12345678910111213141516171819202122232425262728#!/usr/bin/python# -*- coding: utf-8 -*-import timeimport sysimport requestsclass Transaction(object):def __init__(self):passdef run(self):url = 'http://yourip:5000/getnum'res = ''try:r = requests.get(url)assert (r.status_code == 200), "request error:{0}".format(r.status_code)#print r.textexcept Exception as e:print str(e)print str(sys.exc_info())raise Exception('Error: {0}--{1}'.format(str(e), str(sys.exc_info())))if __name__ == '__main__':trans = Transaction()trans.run()新建压测项目:multimech-newproject projectname
- 脚本存放位置:projectname/test_scripts/v_user.py
- 配置文件:projectname/config.cfg
- 启动:multimech-run projectname