使用 LoadRunner 和 JMeter 的同学都知道,性能测试工具设置参数化颇为麻烦,但对于 Python 来说,生成点数据再简单不过了。
参数化系统登录
这里以某系统登录为例,简单介绍登录用户名密码的参数化实现
from locust import HttpLocust, TaskSet, task
from random import randint
# Web性能测试
class UserBehavior(TaskSet):
def on_start(self):
self.login()
# 随机返回登录用户
def login_user():
users = {"user1":123456,"user2":123123,"user3":111222}
data = randint(1, 3)
username = "user"+str(data)
password = users[username]
return username, password
@task
def login(self):
username, password = login_user()
self.client.post("/login_action", {"username":username, "password":password})
class User(HttpLocust):
task_set = UserTask
min_wait = 1000
max_wait = 3000
host = "http://www.xxx.com"
创建 login_user() 方法,定义登录字典 users , 通过randint 随机获取字典中的用户数据。
在 login() 登录任务中,调用 login_user() 方法实现 随机用户的登录。
关于参数化方式很多,这里起一个抛砖引玉作用。
关于 Locust 工具就介绍到这里,能否把 Locust 在工作中用好,取决于你对性能测试业务的理解,其次是灵活的运行 python 语言。
确实有些请求参数需要依赖另一个请求的返回结果,感觉client.get/post应该给一个参数,可以返回完整的返回结果。感觉要找官网反馈一下
浅冬梦雨 创建于 2019-12-23 17:26:06
功能测试上,接口提交用的是request的get,post语句。 locust性能又有自己的client.get 和post语句。 想问一下有办法可以结合在一起,达到一个接口不要写两遍么?
小猪 创建于 2019-04-09 18:15:52
看完了你的教程,基本使用已经会了,非常感谢。 还有个小问题请教下,我们公司商城项目中有个类似下单的功能,并且每个用户一个商品只能下一单。 我们系统是根据登录获取的token来校验用户信息的。 所以我的问题是怎么样模拟较多的用户同时并发。需要准备N多的测试账号吗?
joey 创建于 2019-01-29 16:46:12