简单的web请求

locust的脚本中,模拟负载的web请求,同python requests库一样,以访问禅道系统为例

代码示例 

# coding=utf-8
''' Created on 2019-11-08

    author: ali
'''
import os
from locust import HttpLocust, TaskSet, task

class userTaskSet(TaskSet):
    # 用户访问禅道首页
    @task
    def userLogin(self):
        # 请求url
        test_url = "http://127.0.0.1:8088/zentao/user-login.html"

        # 定义请求头
        webheaders = {
            "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.75 Safari/537.36",
            "Accept-Encoding": "gzip, deflate, br",
            "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8"
        }

        try:
            res = self.client.get(url=test_url, headers=webheaders, verify=False)
            if res.status_code == 200:
                print("success")
            else:
                print("failed")
        except Exception as e:
            print(e)


class websitUser(HttpLocust):
    task_set = userTaskSet
    min_wait = 3000  # 单位为毫秒
    max_wait = 6000  # 单位为毫秒

if __name__ == "__main__":
    os.system("locust -f zentaoTest.py --host=http://127.0.0.1:8088")

脚本说明

userTaskSet类:继承TaskSet类,用于描述用户行为

userLogin(),类方法,描述一个用户为行,用户登录

@task,装饰该方法为一个事务

client.get(),发送get请求

WebsiteUser类:继承HttpLocust类,用于设置性能测试

task_set :指向一个定义的用户行为类

min_wait :模拟负载的任务之间执行时的最小等待时间(单位:毫秒)

max_wait :模拟负载的任务之间执行时的最大等待时间(单位:毫秒)

 

执行性能测试

(1)如果使用pycharm作为开发工具,可直接点击“运行”按钮,启动locust

简单的web请求

(2)cmd命令行启动locust

  • -f 指定性能测试脚本文件
  • --host 指定被测试应用的URL地址,由于脚本中已经写明完整的URL地址,此处写none对测试没有影响

简单的web请求

(3)访问locust web界面,地址:http://localhost:8089/

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

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

Start swarming:执行测试

简单的web请求

(4)测试结果

简单的web请求

Type:请求类型,即接口的请求方法(GETPOST等)

Name:请求的URL路径

requests:完成的请求数量

fails:当前失败的数量

Median:中位数,50%用户的响应时间低于该值,单位为毫秒

Average:平均响应时间,单位为毫秒

Min:最小响应时间,单位为毫秒

Max:最大响应时间,单位为毫秒

Average Size(bytes):请求的平均数据量大小,单位为字节

Current RPS:每秒请求个数