0
votes

events.request_success + = test_success_handle TypeError: type (s) d'opérande non pris en charge pour + =: 'EventHook' et 'function'

Je suis nouveau dans l'outil antiacridienne et j'essaie d'écrire le succès et l'échec individuels à consoler. Voici l'erreur reçue lors de l'exécution.

Error:

events.request_success += test_success_handle
TypeError: unsupported operand type(s) for +=: 'EventHook' and 'function'

Code:

from locust import events

hostname = socket.gethostname()


def test_success_handle(request_type, name, response_time, response_length, **kwargs):
    SUCCESS_TEMPLATE = '[{"measurement": "%s","tags": {"hostname":"%s","requestName": "%s","requestType": "%s","status":"%s"' \
                       '},"time":"%s","fields": {"responseTime": "%s","responseLength":"%s"}' \
                       '}]'
    json_string = SUCCESS_TEMPLATE % (
        "ResponseTable", hostname, name, request_type, "success", datetime.datetime.now(tz=pytz.UTC), response_time,
        response_length)
    print(json_string)



def test_fail_handle(request_type, name, response_time, response_length, exception, **kwargs):
    FAIL_TEMPLATE = '[{"measurement": "%s","tags": {"hostname":"%s","requestName": "%s","requestType": "%s","exception":"%s","status":"%s"' \
                    '},"time":"%s","fields": {"responseTime": "%s","responseLength":"%s"}' \
                    '}]'
    json_string = FAIL_TEMPLATE % (
        "ResponseTable", hostname, name, request_type, exception, "fail", datetime.datetime.now(tz=pytz.UTC),
        response_time, response_length)
    print(json_string)

events.request_success += test_success_handle()
events.request_failure += test_fail_handle()

Pourriez-vous s'il vous plaît m'aider .. Existe-t-il un autre moyen de résoudre le problème avec la dernière version de criquets. Merci

Dans le code, nous avons ajouté la requête POST et essayé de déclencher l'événement et de l'envoyer au gestionnaire pour l'afficher dans la console.


0 commentaires

3 Réponses :


-1
votes

Pouvez-vous essayer le code ci-dessous pour enregistrer vos fonctions de rappel:


1 commentaires

@Hanu - est-ce que cela répond à votre question?



0
votes

Je pense que vous devez perdre les parenthèses et garder les méthodes en dehors de la classe Locust comme ceci

from locust import events, HttpLocust

hostname = socket.gethostname()

def test_success_handle(request_type, name, response_time, response_length, **kwargs):
    SUCCESS_TEMPLATE = '[{"measurement": "%s","tags": {"hostname":"%s","requestName": "%s","requestType": "%s","status":"%s"' \
                       '},"time":"%s","fields": {"responseTime": "%s","responseLength":"%s"}' \
                       '}]'
    json_string = SUCCESS_TEMPLATE % (
        "ResponseTable", hostname, name, request_type, "success", datetime.datetime.now(tz=pytz.UTC), response_time,
        response_length)
    print(json_string)



def test_fail_handle(request_type, name, response_time, response_length, exception, **kwargs):
    FAIL_TEMPLATE = '[{"measurement": "%s","tags": {"hostname":"%s","requestName": "%s","requestType": "%s","exception":"%s","status":"%s"' \
                    '},"time":"%s","fields": {"responseTime": "%s","responseLength":"%s"}' \
                    '}]'
    json_string = FAIL_TEMPLATE % (
        "ResponseTable", hostname, name, request_type, exception, "fail", datetime.datetime.now(tz=pytz.UTC),
        response_time, response_length)
    print(json_string)

class MyLocust(HttpLocust):

   events.request_success += test_success_handle
   events.request_failure += test_fail_handle


0 commentaires

0
votes

Essayez d'utiliser les annotations d'événements, la dernière version stable de locust implémente une méthode pour ce que vous devez faire: add_listener, voir https://docs.locust.io/en/stable/api.html

from locust import events, HttpLocust

hostname = socket.gethostname()

@events.request_success.add_listener
def test_success_handle(request_type, name, response_time, response_length, **kwargs):
    SUCCESS_TEMPLATE = '[{"measurement": "%s","tags": {"hostname":"%s","requestName": "%s","requestType": "%s","status":"%s"' \
                       '},"time":"%s","fields": {"responseTime": "%s","responseLength":"%s"}' \
                       '}]'
    json_string = SUCCESS_TEMPLATE % (
        "ResponseTable", hostname, name, request_type, "success", datetime.datetime.now(tz=pytz.UTC), response_time,
        response_length)
    print(json_string)


@events.request_failure.add_listener
def test_fail_handle(request_type, name, response_time, response_length, exception, **kwargs):
    FAIL_TEMPLATE = '[{"measurement": "%s","tags": {"hostname":"%s","requestName": "%s","requestType": "%s","exception":"%s","status":"%s"' \
                    '},"time":"%s","fields": {"responseTime": "%s","responseLength":"%s"}' \
                    '}]'
    json_string = FAIL_TEMPLATE % (
        "ResponseTable", hostname, name, request_type, exception, "fail", datetime.datetime.now(tz=pytz.UTC),
        response_time, response_length)
    print(json_string)

class MyLocust(HttpLocust):
   events.request_success.add_listener(individual_success_handle)
   events.request_failure.add_listener(individual_fail_handle)


0 commentaires