app基于python+locust的接口性能测试 初探

背景

  测试过程中会有针对单接口及多接口的压测(典型场景为后台配置总量的抢券,抢完为止)

策略

  之前用的比较多的是使用Jmeter,通过设置线程数、RPS(每秒用户数)、循环次数进行接口压测,近期了解了locust,觉得比较新颖(python代码方式),接下来简单介绍下基于Python+locust的接口压测。

环境

  配置python环境;

  配置locust-- pip install locustio;

测试代码

from locust import HttpLocust, TaskSet, task
import subprocess
import json #abc
# 性能测试任务类 TaskSet.
class UserBehavior(TaskSet):
    # 开始
    def on_start(self):
        pass
    # 任务
    @task(1)
    def getTagVals(self):
        u"""
        request_url:请求路径
        request_params:请求头参数
        request_json:请求json参数
        """
        request_url = "/api/xxx/xxx"
        request_params = {
            "key": "tabs"
        }
        request_json = {
            "tagKey": 25
        }
        response = self.client.post(
            url=request_url,
            params=request_params,
            json=request_json
        )
        if response.status_code != 200:
            print (u"返回异常")
            print (u"请求返回状态码:"), response.status_code
        elif response.status_code == 200:
            print (u"返回正常")
        # 这里可以编写自己需要校验的返回内容
        # content = json.loads(response.content)["content"]
        # if content["tagKey"] == 25:
        #     print u"校验成功"
        #     print json.dumps(content, encoding="UTF-8", ensure_ascii=False)
# 性能测试配置
class MobileUserLocust(HttpLocust):
    u"""
    min_wait :用户执行任务之间等待时间的下界,单位:毫秒。
    max_wait :用户执行任务之间等待时间的上界,单位:毫秒。
    """
    # weight = 3
    task_set = UserBehavior
    host = "http://www.xxxx.com"
    min_wait = 3000
    max_wait = 6000
if __name__ == "__main__":
    subprocess.Popen("locust -f main_pt.py", shell=True)

说明:需要注意的是,request_url为请求路径,request_params即入参,host为请求的host,接口为get方式或post方式则改动response=self.client.post对应值

步骤

扫描二维码关注公众号,回复: 7601161 查看本文章

  1、将代码保存为main_pt.py后,进入对应路径,执行:py main_pt.py

  2、本地浏览器打开 http://localhost:8089

  3、在弹出的框内输入相应参数,点击start开始。对应第一第二行分别为 模拟的用户总数  和 每秒钟并发的用户数量

    

  4、描述

    

    commond详情:

      

    

    引自:https://www.cnblogs.com/cllovewxq/p/7692248.html

猜你喜欢

转载自www.cnblogs.com/mncasey/p/11737889.html