使用 python 在 API 上进行负载测试
Load testing on an API using python
我目前正在编写 python 负载测试脚本 API.I 想检查 API 在 time.The API 时可以接受多少请求是为了注册所以我每次都必须发送唯一的参数。
无论如何我可以通过蝗虫或任何其他方式实现它吗?
如有任何帮助,我们将不胜感激。
这是我的单机注册码。
def registration:
URL = "ip"
PARAMS = {'name':'test','password':'test1','primary_email':'test667@gmail.com','primary_mobile_number':'9999999999','country_abbrev':'US'}
r = requests.post(url = URL,params = PARAMS,auth=HTTPDigestAuth('user', 'pass'))
response = r.text
print response
看看Faker Python Package。这会为你生成假数据,无论你需要 bootstrap 你的数据库,创建好看的 XML 文档,填写你的持久性以对其进行压力测试,还是匿名化从生产服务中获取的数据,Faker 都是给你。
from locust import HttpLocust, TaskSet, task
class UserBehavior(TaskSet):
def on_start(self):
pass # add code that you want to run during ramp up
def on_stop(self):
pass # add code that you want to run during ramp down
def registration(self):
name = fake.first_name()
last_name = fake.last_name()
password = ''
email = name + last_name + '@gmail.com'
phone = fake.phone_number()
URL = "ip"
PARAMS = {'name':name,'password': password,'primary_email': email,'primary_mobile_number':phone,'country_abbrev':'US'}
self.client.post(URL, PARAMS)
class WebsiteUser(HttpLocust):
task_set = UserBehavior
min_wait = 5000
max_wait = 9000
要开始负载测试,运行
locust -f locust_files/my_locust_file.py --host=http://example.com
有关详细信息,请访问 Locust Quickstart
from locust import HttpLocust, TaskSet
def login(self):
params= {'name':'test','password':'test1','primary_email':'test667@gmail.com','primary_mobile_number':'9999999999','country_abbrev':'US'}
self.client.post(URL, data=params)
#The data parameter or json can both be used here. If it's a dict then data would work but for json replace data with json. For more information you can check out requests package as Locust internally uses requests only.
class UserBehavior(TaskSet):
tasks = {index: 2, profile: 1}
def on_start(self):
login(self)
def on_stop(self):
pass
@task
def try(self):
pass
class WebsiteUser(HttpLocust):
task_set = UserBehavior
min_wait = 5000
max_wait = 9000
要开始负载测试,运行 locust -f locust_files/my_locust_file.py --host=http://example.com 其中主机是您的 IP。然后可以到127.0.0.1:8089去模拟select个虚拟用户数。
在 windows 上只有 1024 个用户的限制。但是您可以使用 Locust 提供的 Master Slave Architecture 的惊人支持。
PS: on_start 方法 运行 中的任何内容仅一次每个用户。因此,既然您想测试 API 的限制,您应该更喜欢在 @task 装饰器下添加该请求。
希望对您有所帮助! :)
有不同的方法,例如:
- 使用random strings
- 使用第 3 方库,例如 faker
- 在同一 Python 脚本中列出凭据
- 在 CSV 文件或数据库等外部数据源中列出凭据
很遗憾,您的问题对 "unique" 参数没有明确要求,因此我暂时建议您熟悉 How to Run Locust with Different Users 文章
查看 medium link for load test with python with locust - 一种开源负载测试工具。
我目前正在编写 python 负载测试脚本 API.I 想检查 API 在 time.The API 时可以接受多少请求是为了注册所以我每次都必须发送唯一的参数。
无论如何我可以通过蝗虫或任何其他方式实现它吗?
如有任何帮助,我们将不胜感激。
这是我的单机注册码。
def registration:
URL = "ip"
PARAMS = {'name':'test','password':'test1','primary_email':'test667@gmail.com','primary_mobile_number':'9999999999','country_abbrev':'US'}
r = requests.post(url = URL,params = PARAMS,auth=HTTPDigestAuth('user', 'pass'))
response = r.text
print response
看看Faker Python Package。这会为你生成假数据,无论你需要 bootstrap 你的数据库,创建好看的 XML 文档,填写你的持久性以对其进行压力测试,还是匿名化从生产服务中获取的数据,Faker 都是给你。
from locust import HttpLocust, TaskSet, task
class UserBehavior(TaskSet):
def on_start(self):
pass # add code that you want to run during ramp up
def on_stop(self):
pass # add code that you want to run during ramp down
def registration(self):
name = fake.first_name()
last_name = fake.last_name()
password = ''
email = name + last_name + '@gmail.com'
phone = fake.phone_number()
URL = "ip"
PARAMS = {'name':name,'password': password,'primary_email': email,'primary_mobile_number':phone,'country_abbrev':'US'}
self.client.post(URL, PARAMS)
class WebsiteUser(HttpLocust):
task_set = UserBehavior
min_wait = 5000
max_wait = 9000
要开始负载测试,运行
locust -f locust_files/my_locust_file.py --host=http://example.com
有关详细信息,请访问 Locust Quickstart
from locust import HttpLocust, TaskSet
def login(self):
params= {'name':'test','password':'test1','primary_email':'test667@gmail.com','primary_mobile_number':'9999999999','country_abbrev':'US'}
self.client.post(URL, data=params)
#The data parameter or json can both be used here. If it's a dict then data would work but for json replace data with json. For more information you can check out requests package as Locust internally uses requests only.
class UserBehavior(TaskSet):
tasks = {index: 2, profile: 1}
def on_start(self):
login(self)
def on_stop(self):
pass
@task
def try(self):
pass
class WebsiteUser(HttpLocust):
task_set = UserBehavior
min_wait = 5000
max_wait = 9000
要开始负载测试,运行 locust -f locust_files/my_locust_file.py --host=http://example.com 其中主机是您的 IP。然后可以到127.0.0.1:8089去模拟select个虚拟用户数。 在 windows 上只有 1024 个用户的限制。但是您可以使用 Locust 提供的 Master Slave Architecture 的惊人支持。
PS: on_start 方法 运行 中的任何内容仅一次每个用户。因此,既然您想测试 API 的限制,您应该更喜欢在 @task 装饰器下添加该请求。
希望对您有所帮助! :)
有不同的方法,例如:
- 使用random strings
- 使用第 3 方库,例如 faker
- 在同一 Python 脚本中列出凭据
- 在 CSV 文件或数据库等外部数据源中列出凭据
很遗憾,您的问题对 "unique" 参数没有明确要求,因此我暂时建议您熟悉 How to Run Locust with Different Users 文章
查看 medium link for load test with python with locust - 一种开源负载测试工具。