使用 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 - 一种开源负载测试工具。