Вход нескольких пользователей в Locust

#python #random #locust

#python #Случайный #locust

Вопрос:

Я хочу разрешить моему приложению locust входить в систему с более чем одной учетной записью пользователя.

Я пробовал random.shuffle(), но это все еще только одна учетная запись.

Вот код:

 from locust import HttpUser, task, TaskSet, between, exception, events
import logging
import random

paths_in_dict = {"hard_path": "secure/izar.xhtml/",
                 "standard_analysis_path": "analysis/STANDARD/",
                 "smart_analysis_path": "analysis/SMART/"}
passwd = 'radio'
logins = [
    'aaa', 'bbb', 'ccc', 'ddd', 'eee'
]
random.shuffle(logins)
login_pass = [(elem, passwd) for elem in logins]

if len(login_pass) > 0:
    user, passwd = login_pass.pop()
    default_headers = {'X-Username': user, 'X-Password': passwd}


class MyUser(HttpUser):
    wait_time = between(5, 9)
    host = "https://localhost:9003/"

    def on_start(self):
        self.client.verify = False
        self.login()

    def on_stop(self):
        pass

    def login(self):
        self.client.request(method="POST", url="login.xhtml", headers=default_headers,
                            name="---ON START---LOGIN")
        logging.info('Login with %s username and %s password', user, passwd)

# ----------------------------------MAIN LINKS/DROPDOWNS----------------------------------------------
    @task
    def dashboard(self):
        dashboard_get_response = self.client.get(paths_in_dict["hard_path"]   "dashboard", name="Dashboard")
        return dashboard_get_response
  

Как заставить его работать со всеми элементами из списка логинов?

Ответ №1:

Вы выполняете login_pass.pop() в неправильном месте. Если вы сделаете это на уровне top / module, он будет выполнен только один раз. Переместите этот код в метод on_start или login .

Комментарии:

1. Вы имеете в виду — def login(self): self.client.request(метод =»POST», url =»login.xhtml», заголовки = default_headers, имя = «— ПРИ ЗАПУСКЕ — LOGIN») logging.info (‘Войдите в систему с именем пользователя %s и паролем %s’, пользователь, пароль) passwd = ‘radio’ logins = [‘aaa’, ‘bbb’, ‘ccc’, ‘ddd’, ‘eee’ ] random.shuffle(логины) login_pass = [(элемент, пароль) для элемента в логинах]

2. это все еще не работает. Не имеет значения, буду ли я помещать эти строки в метод login или on_start.

3. невозможно сказать, что происходит, читая это 🙂 может быть, вы можете обновить свой пост? это больше всего похоже на проблему python, а не на проблему locust…

Ответ №2:

Я решил эту проблему.

Просто изменил random.shuffle(logins) random.choice(logins) и переместил его в метод входа вместе с … pop().