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.
3 Réponses :
Pouvez-vous essayer le code ci-dessous pour enregistrer vos fonctions de rappel:
@Hanu - est-ce que cela répond à votre question?
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
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)