码迷,mamicode.com
首页 > 其他好文 > 详细

Locust 脚本练习

时间:2018-10-10 17:17:23      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:tps   tar   https   locust   --   场景   pass   .post   except   

1、循环取数据,数据可重复使用

  e.g. 模拟5个用户并发请求网页,总共有6个URL地址,每个虚拟用户都会依次循环加载这6个URL地址;

from locust import TaskSet, task, HttpLocust
class UserBehavior(TaskSet):
    def on_start(self):
        self.index = 0
    @task
    def test_visit(self):
        url = self.locust.share_data[self.index]
        print(visiting -- url: %s % url)
        self.index = (self.index + 1) % len(self.locust.share_data)
        self.client.get(url,verify=False)
class WebsiteUser(HttpLocust):
    task_set = UserBehavior
    min_wait = 1000
    max_wait = 3000
    share_data = [url1, url2, url3, url4, url5,url6]
    host = https://172.1.1.1/

2、保证并发测试数据唯一性,不循环取数据

  e.g. 模拟5用户并发注册账号,总共有个100账号,要求注册账号不重复,注册完毕后结束测试;

from locust import TaskSet, task, HttpLocust
from Queue import Queue
class UserBehavior(TaskSet):
    @task
    def on_start(self):
        try:
            data = self.locust.user_data_queue.get()
        except Queue.Empty():
            print(account data run out, test ended.)
            exit(0)
        print(register with user: {}, pwd: {}.format(data[account], data[password]))
        payload = {
            account: data[account],
            password: data[password]
        }
        self.client.post(/register, data=payload,verify = False)
class WebsiteUser(HttpLocust):
    task_set = UserBehavior
    user_data_queue = Queue()
    for index in range(100):
        data = {
            "account": "test%04d" % index,
            "password": "pwd%04d" % index,
        }
        user_data_queue.put_nowait(data)
    min_wait = 1000
    max_wait = 3000

3、保证并发测试数据唯一性,循环取数据

  e.g 模拟5用户并发登录账号,总共有100个账号,要求并发登录账号不相同,但数据可循环使用。

from locust import TaskSet, task, HttpLocust
from
Queue import Queue class UserBehavior(TaskSet): @task def on_start(self): try: data = self.locust.user_data_queue.get() except Queue.Empty(): print(account data run out, test ended.) exit(0) print(register with user: {}, pwd: {}.format(data[account], data[password])) payload = { account: data[account], password: data[password] } self.client.post(/register, data=payload,verify = False) self.locust.user_data_queue.put_nowait(data) class WebsiteUser(HttpLocust): task_set = UserBehavior user_data_queue = Queue() for index in range(100): data = { "account": "test%04d" % index, "password": "pwd%04d" % index, } user_data_queue.put_nowait(data) min_wait = 1000 max_wait = 3000

该种场景的实现方式与上一种场景基本相同,唯一的差异在于,每次使用完数据后,需要再将数据放入队列中。

Locust 脚本练习

标签:tps   tar   https   locust   --   场景   pass   .post   except   

原文地址:https://www.cnblogs.com/xiatian09/p/9767157.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!