简单的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
(2)cmd命令行启动locust
- -f 指定性能测试脚本文件
- --host 指定被测试应用的URL地址,由于脚本中已经写明完整的URL地址,此处写none对测试没有影响
(3)访问locust web界面,地址:http://localhost:8089/
Number of users to simulate:设置模拟的用户总数
Hatch rate (users spawned/second):每秒启动的虚拟用户数
Start swarming:执行测试
(4)测试结果
Type:请求类型,即接口的请求方法(GET、POST等)
Name:请求的URL路径
requests:完成的请求数量
fails:当前失败的数量
Median:中位数,50%用户的响应时间低于该值,单位为毫秒
Average:平均响应时间,单位为毫秒
Min:最小响应时间,单位为毫秒
Max:最大响应时间,单位为毫秒
Average Size(bytes):请求的平均数据量大小,单位为字节
Current RPS:每秒请求个数