Использование Locust для одновременного запуска нагрузочного теста на несколько URL-адресов, загруженных из CSV - PullRequest
0 голосов
/ 09 марта 2020

Ссылаясь на мои locusfile.py ниже:

from locust import HttpLocust, TaskSet, between, task
import csv

class UserBehavior(TaskSet):
    @task(1)
    def index(l):
        with open ('topURL.csv') as csvfile:
            readCSV = csv.reader(csvfile, delimiter=',')
            for row in readCSV:
                l.client.get("%s" % (row[0]))

class WebsiteUser(HttpLocust):
    task_set = UserBehavior
    wait_time = between(5.0, 9.0)

Когда я выполняю этот скрипт, Locust мог работать без каких-либо ошибок. Однако он пропустит oop через каждую строку и загрузит тест только по последнему URL. Поскольку он читает следующий URL, предыдущий URL больше не подвергается нагрузочной проверке. Вместо этого я хочу, чтобы Locust загружал тестирование все большего и большего количества URL одновременно, поскольку он читает строку за строкой из CSV.

Редактировать
Мне удалось добиться частичного параллелизма, установив wait_time = between(0.0, 0.0)

Ответы [ 2 ]

1 голос
/ 09 марта 2020

Попробуйте заполнить массив вашими данными CSV при настройке и выбрать случайным образом из него. Например,

    def fill_array():
        with open('topURL.csv') as csvfile:
        readCSV = csv.reader(csvfile, delimiter=',')
        for row in readCSV:
            urls.append(row[0])

, затем

    @task(1)
    def index(l):
        l.client.get("%s" % (random.choice(urls)))

дополнительная информация при настройке: https://docs.locust.io/en/stable/writing-a-locustfile.html#setups -задачи при запуске и при остановке

0 голосов
/ 09 марта 2020

Вы можете попробовать что-то вроде:

global USER_CREDENTIALS
USER_CREDENTIALS = list(readCSV)

Когда вы закончите, вы сможете ссылаться на каждую строку для каждого виртуального пользователя / итерации

Ссылки:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...