Python multitraitement: AttributeError: ne Peut pas pickle objet local

0

La question

J'ai écrit un ChatOps bot pour l'outil de collaboration Mattermost à l'aide de ce cadre. Maintenant je suis en train d'écrire et d'exécuter les tests d'intégration et j'ai utilisé leurs exemples. Par cloner le dépôt git, vous pouvez exécuter les tests par vous-même. Leur docker-compose.yml fichier ne fonctionnera que sur une machine Linux. Si vous voulez le reproduire sur un ordinateur Mac, vous devrez éditer le docker-compose.yml pour:

version: "3.7"

services:
  app:
    container_name: "mattermost-bot-test"
    build: .
    command: ./mm/docker-entry.sh
    ports:
      - "8065:8065"
    extra_hosts:
      - "dockerhost:127.0.0.1"

Après l'exécution de la commande docker-compose up -d Mattermost est disponible à localhost:8065. J'ai pris un test simple de leur projet et l'a copié dans base-test.py. Vous pouvez voir mon code source ici. Après le début du test en exécutant la commande pytest --capture=no --log-cli-level=DEBUG . il sera de retour le message d'erreur suivant: AttributeError: Can't pickle local object 'start_bot.<locals>.run_bot'. Cette erreur manifeste également sur le même cas de test dans leur projet. L'erreur se produit à la ligne dans le 92 utils.py fichier

Ce que je fais mal ici?

2
0

Je ne sais pas si vous avez déjà allé dans cette voie, mais je pense que vous pourriez obtenir passé le décapage de l'erreur en faisant run_bot prendre le bot qu'il n' bot.run() avec comme argument et ensuite de le passer au processus.

2021-11-24 15:38:26

Vous ne comprenez pas bien ce que tu voulais dire. J'ai essayé plusieurs choses comme passer bot comme argument, mais sans succès :(
Lucas Scheepers
0

Jetez un oeil à l'onglet Action sur GitHub. Pytest semble exécuter correctement (en ignorant les exceptions sur le webhook test)

Voici une récente vous pouvez utiliser pour comparer votre environnement de set-up: https://github.com/attzonko/mmpy_bot/runs/4289644769?check_suite_focus=true

2021-11-29 17:04:19

J'ai exactement la même environnement: Python 3.8.2 et Pytest 6.2.5. Aussi, je suis en train d'exécuter une autre commande est indiqué dans la question ci-dessus et il retourne le pickle error. Lorsque j'essaie d'utiliser la commande que vous utilisez: pytest . -vv -n auto il retourne: unrecognized arguments: -n auto. Avez-vous peut-être savez-vous pourquoi? Aussi j'ai posté cette question six jours et les tests lancé il y a 7 jours, cela explique peut-être pourquoi il est maintenant à défaut à ma machine locale?
Lucas Scheepers

Voici une course de 1h il y a: github.com/attzonko/mmpy_bot/runs/...
Plazgoth

Dans d'autres langues

Cette page est dans d'autres langues

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................