#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().