使用python对API进行负载测试

时间:2019-08-27 06:05:37

标签: python load-testing locust

我目前正在编写用于对API进行负载测试的python脚本。我想检查一次API可以处理多少个请求。该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

4 个答案:

答案 0 :(得分:3)

看看Faker Python Package。无论您是需要引导数据库,创建美观的XML文档,填充您的持久性以进行压力测试还是匿名化来自生产服务的数据,这都会为您生成伪造数据,Faker适合您。

true

要启动负载测试,请运行 ga('send', 'event', 'Videos', 'play', 'Super video', { nonInteraction: true }); 有关更多信息,请访问Locust Quickstart

答案 1 :(得分:2)

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,其中host是您的IP。然后,您可以转到127.0.0.1:8089选择要模拟的虚拟用户数。 在Windows上,只能有1024个用户。但是您可以使用Locust提供的Master Slave Architecture的惊人支持。

PS: on_start 方法中放置的所有内容对于每个用户只能运行一次。因此,由于您要测试API的限制,因此您最好选择在 @task 装饰器下添加该请求。

希望这会有所帮助! :)

答案 2 :(得分:0)

有不同的方法,例如:

  • 使用random strings
  • 使用类似faker的第三方库
  • 在相同的Python脚本中列出凭据
  • 在外部数据源(例如CSV文件或数据库)中列出凭据

很遗憾,您的问题对“唯一”参数没有明确要求,因此暂时建议您熟悉How to Run Locust with Different Users文章

答案 3 :(得分:-1)

使用 locust 来查看 medium link for load test with python - 一种开源负载测试工具。