Unitest.mock.MagicMock raises a StopIteration - not following PEP 479

Ouverte
#98,362 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
4/5
Temps estimé
3-5 jours
Accessibilité débutants
35/100
Type d'issue
Bug
Clarté
Plutôt claire
Activité
À l'abandon
Stack technique
python
Domaine
testing-qa

Piste de recherche

Commencez avec unittest.mock.MagicMock et reproduisez des appels répétés avec un itérable épuisé, y compris son utilisation dans une compréhension de liste. Lisez PEP 479 ainsi que le comportement de l'iterable utilisé comme side effect de mock ; le travail est terminé lorsque le comportement attendu de l'itérable épuisé est établi et couvert par des tests de régression.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

stdlib

It looks like Unitest.mock.MagicMock raises a StopIteration when repeated calls to the mock are made and an iterable is exhausted. After Python 3.7+, due to PEP 479, this raises a Runtime Error. This makes unit tests that worked in Python 3.6 fail, including any list comprehensions on MagicMock results. These can be easily caught with a try/except, but it's a bit clunky.

According to PEP 479 instead of StopIteration MagicMock should just return return when the iterable is exhausted. See here: https://peps.python.org/pep-0479/

Please let me know if I missed something on my end. Thanks for looking into this.

Langage dominant
Python
Étoiles
77.2k
Forks
36k
Merge moyen
1 j 9 h
PR mergées (30 j)
558

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de python/cpython

Toutes les issues de python/cpython

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.