Locust.io bagaimana saya bisa menggunakan pengguna yang berbeda di locust.io tanpa gangguan sistem ketika saya memulai / berhenti untuk menjalankan baru

Aug 19 2020

Saya memiliki kode ini yang berfungsi dengan baik untuk dijalankan pertama kali pada server yang diterapkan locust.io, tetapi ketika saya memulai / berhenti untuk menjalankan proses baru saya mendapatkan beberapa kesalahan, sehubungan dengan daftar. Bisakah Anda guyz membantu saya untuk dapat mengendarainya?

from locust import HttpUser, task, between, SequentialTaskSet, events
import uuid
import json
import csv
import logging, sys, random, os

with open('somecsv.csv', 'r') as f:
    reader = csv.reader(f)
    user= list(reader)
    #print(user)

class somethingclass(SequentialTaskSet):

    def on_start(self):
        if len(user) > 0:
            self.id= str(user.pop()).strip("][''")

    @task
    def someting(self):
        do something with self.id request
  
    @task
    def someting2(self):
        do something with self.id request
                        


class Main(HttpUser):
    
    wait_time = between(5, 10)
    tasks = [somethingclass]
    
    def _init_(self, *args, **kwargs):
        super(Main, self)._init_(*args, **kwargs)

kesalahannya adalah:

[2020-08-18 23: 06: 50.899] PC / ERROR / locust.user.task: objek 'sesuatu kelas' tidak memiliki atribut 'id' Traceback (panggilan terakhir terakhir): File "c: \ windows \ system32 \ src \ locust \ locust \ user \ task.py ", baris 284, di jalankan self.execute_next_task () File" c: \ windows \ system32 \ src \ locust \ locust \ user \ task.py ", baris 309, di execute_next_task self .execute_task (self._task_queue.pop (0)) File "c: \ windows \ system32 \ src \ locust \ locust \ user \ task.py", baris 321, di tugas execute_task (self) File "C: \ Users \ user \ Desktop \ Work \ Chipico Chip Transfer \ chiptransfer_load.py ", baris 44, di beberapa" uuid ": '% s'% self.id, AttributeError: objek 'sesuatu kelas' tidak memiliki atribut 'id'

Jawaban

1 Solowalker Aug 19 2020 at 03:57

Anda dapat menggunakan peristiwa test_start dan test_stop untuk menyetel ulang userdata Anda .

from locust import User, task, constant, TaskSet, events
from logging import getLogger
import uuid

logger = getLogger("test")
user = []

@events.test_start.add_listener
def start_something(**kwargs):
    logger.info("Starting test...")
    user.append(uuid.uuid4())

class somethingclass(TaskSet):
    @task
    def do_something(self):
        logger.info(f"User: {user}")

class Main(User):
    wait_time = constant(2)
    tasks = [somethingclass]

Ini memberi saya keluaran berikut dengan beberapa penghentian dan permulaan tes.

[2020-08-18 16:14:12,549] INFO/locust.main: Starting web interface at http://:8089
[2020-08-18 16:14:12,557] INFO/locust.main: Starting Locust 1.1.1
[2020-08-18 16:14:15,759] INFO/test: Starting test...
[2020-08-18 16:14:15,759] INFO/locust.runners: Hatching and swarming 1 users at the rate 1 users/s (0 users already running)...
[2020-08-18 16:14:15,759] INFO/locust.runners: All users hatched: Main: 1 (0 already running)
[2020-08-18 16:14:15,760] INFO/test: User: [UUID('f4e9d580-af4a-4fb7-804a-372faa8fcacd')]
[2020-08-18 16:14:17,764] INFO/test: User: [UUID('f4e9d580-af4a-4fb7-804a-372faa8fcacd')]
[2020-08-18 16:14:19,765] INFO/test: User: [UUID('f4e9d580-af4a-4fb7-804a-372faa8fcacd')]
[2020-08-18 16:14:21,767] INFO/test: User: [UUID('f4e9d580-af4a-4fb7-804a-372faa8fcacd')]
[2020-08-18 16:14:28,674] INFO/test: Starting test...
[2020-08-18 16:14:28,675] INFO/locust.runners: Hatching and swarming 1 users at the rate 1 users/s (0 users already running)...
[2020-08-18 16:14:28,675] INFO/locust.runners: All users hatched: Main: 1 (0 already running)
[2020-08-18 16:14:28,675] INFO/test: User: [UUID('f4e9d580-af4a-4fb7-804a-372faa8fcacd'), UUID('c061117e-f585-4da6-8188-59a0e1ff8acb')]
[2020-08-18 16:14:30,679] INFO/test: User: [UUID('f4e9d580-af4a-4fb7-804a-372faa8fcacd'), UUID('c061117e-f585-4da6-8188-59a0e1ff8acb')]
[2020-08-18 16:14:32,682] INFO/test: User: [UUID('f4e9d580-af4a-4fb7-804a-372faa8fcacd'), UUID('c061117e-f585-4da6-8188-59a0e1ff8acb')]
[2020-08-18 16:14:34,688] INFO/test: User: [UUID('f4e9d580-af4a-4fb7-804a-372faa8fcacd'), UUID('c061117e-f585-4da6-8188-59a0e1ff8acb')]
[2020-08-18 16:14:38,426] INFO/test: Starting test...
[2020-08-18 16:14:38,427] INFO/locust.runners: Hatching and swarming 1 users at the rate 1 users/s (0 users already running)...
[2020-08-18 16:14:38,427] INFO/locust.runners: All users hatched: Main: 1 (0 already running)
[2020-08-18 16:14:38,428] INFO/test: User: [UUID('f4e9d580-af4a-4fb7-804a-372faa8fcacd'), UUID('c061117e-f585-4da6-8188-59a0e1ff8acb'), UUID('cfd2a456-87d4-4cb2-b7d2-939bb1dfc560')]
[2020-08-18 16:14:40,433] INFO/test: User: [UUID('f4e9d580-af4a-4fb7-804a-372faa8fcacd'), UUID('c061117e-f585-4da6-8188-59a0e1ff8acb'), UUID('cfd2a456-87d4-4cb2-b7d2-939bb1dfc560')]
RazvanRistea Aug 19 2020 at 14:55

dari belalang impor Pengguna, tugas, konstanta, TaskSet, peristiwa dari logging impor getLogger import uuid

logger = getLogger ("test") pengguna = []

@ events.test_start.add_listener def start_something (** kwargs): logger.info ("Memulai pengujian ...") user.append (uuid.uuid4 ())

kelas sesuatu kelas (TaskSet): @task def do_something (mandiri): logger.info (f "Pengguna: {pengguna}")

kelas Utama (Pengguna): waktu tunggu = konstan (2) tugas = [kelas sesuatu]

adalah jawaban yang benar