Python中级篇(二十二)locust——python性能测试模块

一般的软件性能测试都是使用专属的工具来进行,类似jmeter、LR等工具功能齐全且成熟。今天学习了python的一个性能测试模块locust,不用依赖UI界面进行配置,全程代码岂不是更爽。况且它不像jmeter模拟的负载是线程绑定的,最重要的一点就是,性能测试的原则就是尽可能的减少工具本身对于系统的影响,这一点locust无异于能更好的减少影响。当然创建过程对于新手而言是相对繁琐的。

安装方法不做陈述,python大部分都是使用的pycharm,安装三方库不要太简单。

直接贴代码看注释就可简单了解整个配置,想知道更多要养成command+左键看文档的习惯,毕竟有很多的函数方法会被弃用。

from locustimport HttpLocust,TaskSet,task,between

class UserBehavior(TaskSet):

def one_start(self):

#可在此处初始化前置任务,每一次任务调用一次

        pass

    #任务

#@task装饰该方法表示为用户行为,括号里面参数表示该行为的执行权重:数值越大,执行频率越高,不设置默认是1;

    @task(1)

def getTagVals(self):

#request_params  配置请求头

#request_json  配置请求参数

        request_url ='https://ratest-cp.csc108.com/advisor/ra/znjy/api/v1/graphql'

        request_params = {

'User-Agent':"Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, "

                        "like Gecko) Chrome/80.0.3987.163 Mobile Safari/537.36",

'content-type':'application/json',

'Authorization':'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VybmFtZSI6IkExNUM4ODA1NjY3ODFERTY3RjkyRjM4REM0MDI3NDVDRUFBNTA0M0EyMTY0NkY2NjlFMzE5MUFDMjM5MTQzQTciLCJzY29wZXMiOlsiXHU4OGM1XHU1OTA3Olx1NjdlNVx1NzcwYlx1NGVkNlx1NGViYSIsIlx1ODhjNVx1NTkwNzpcdThiYTJcdTk2MDUiLCJcdTg4YzVcdTU5MDc6XHU2N2U1XHU3NzBiIiwiXHU4OGM1XHU1OTA3Olx1NTIxYlx1NWVmYSIsIlx1ODhjNVx1NTkwNzpcdTRmZWVcdTY1MzkiLCJcdTY3M2FcdTU2NjhcdTRlYmE6XHU2N2U1XHU3NzBiXHU0ZWQ2XHU0ZWJhIiwiXHU2NzNhXHU1NjY4XHU0ZWJhOlx1OGJhMlx1OTYwNSIsIlx1NjczYVx1NTY2OFx1NGViYTpcdTY3ZTVcdTc3MGIiLCJcdTY3M2FcdTU2NjhcdTRlYmE6XHU1MjFiXHU1ZWZhIiwiXHU2NzNhXHU1NjY4XHU0ZWJhOlx1NGZlZVx1NjUzOSIsIlx1N2EzYlx1ODM0OVx1NGViYVx1NjU3MFx1NjM2ZTpcdTY3ZTVcdTc3MGIiLCJcdTUzMDU6XHU2N2U1XHU3NzBiIiwiXHU1MzA1Olx1OGJhMlx1OTYwNSIsIlx1NTMwNTpcdTUyMWJcdTVlZmEiLCJcdTUzMDU6XHU0ZmVlXHU2NTM5IiwiXHU2Mjk1XHU4ZDQ0XHU1MzlmXHU1MjE5Olx1NjdlNVx1NzcwYiIsIlx1NzUyOFx1NjIzNzpcdTY3ZTVcdTc3MGIiLCJcdTY3NDNcdTk2NTA6XHU2N2U1XHU3NzBiIl0sImV4cCI6MTU4NzM1MDk4OCwic3ViIjoiYWNjZXNzIn0.y2dCUd1i8HIQjNiAileI3oEehzvJvS52YPiXQFf_4tg'

        }

request_json = {"query":"{weeklyList{startDate endDate}}","variables":None,"operationName":None}

response =self.client.post(url=request_url,params=request_params,json=request_json)

if response.status_code !=200:

print('异常!请求返回码:',response.status_code)

if response.status_code ==200:

print('成功!')

# 性能测试配置

class MobileUserLocust(HttpLocust):

#task_set  指向定义了用户行为的类

#wait_time  模拟负载的任务之间执行时的时间范围

    task_set = UserBehavior

#host = ''  #待测试的ip或者域名

    wait_time = between(100,3000)

以上配置即可,自行修改

启动locust

1、如果启动的locust文件名为locustfile.py并位于当前工作目录中,可以在编译器中直接运行该文件,或者通过cmd,执行如下命令:

locust --host=‘请求url’

2、如果Locust文件位于子目录下且名称不是locustfile.py,可以使用-f命令启动上面的示例locust文件:

locust -f ‘文件名‘.py --host=‘请求url’

3、如果要运行分布在多个进程中的Locust,通过指定-master以下内容来启动主进程 :

locust -f testscript/locusttest.py --master --host=‘请求url’

4、如果要启动任意数量的从属进程,可以通过-salve命令来启动locust文件:

locust -f testscript/locusttest.py --salve --host=‘请求url’

5、如果要运行分布式Locust,必须在启动从机时指定主机(运行分布在单台机器上的Locust时不需要这样做,因为主机默认为127.0.0.1):

locust -f testscript/locusttest.py --slave --master-host=192.168.0.100 --host=‘请求url’

6、启动locust文件成功后,编译器控制台会显示如下信息:

[2020-04-09 01:01:44,727] IMYalost/INFO/locust.main: Starting web monitor at *:8089

[2020-04-09 01:01:44,729] IMYalost/INFO/locust.main: Starting Locust 0.8

PS:8089是该服务启动的端口号,如果是本地启动,可以直接在浏览器输入http://localhost:8089打开UI界面,如果是其他机器搭建locust服务,则输入该机器的IP+端口即可;


Number of users to simulate:设置模拟的用户总数

Hatch rate (users spawned/second):每秒启动的虚拟用户数

Start swarming:执行locust脚本


指标就是这些个,模块如下:

Statistics:类似于jmeter中Listen的聚合报告;

Charts:测试结果变化趋势的曲线展示图,分别为每秒完成的请求数(RPS)、响应时间、不同时间的虚拟用户数;

Failures:失败请求的展示界面;

Exceptions:异常请求的展示界面;

Download Data:测试数据下载模块

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,470评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,393评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,577评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,176评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,189评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,155评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,041评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,903评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,319评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,539评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,703评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,417评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,013评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,664评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,818评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,711评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,601评论 2 353

推荐阅读更多精彩内容