`unittest.mock.Mock` does not allow name attribute to be mocked in constructor
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 77.2k
- Forks
- 36k
- Ø Merge
- 1 T. 9 Std.
- Gemergte PRs (30 T.)
- 558
Beschreibung
Bug report
Would like to set name attribute of a mocked object directly when creating Mock() object.
Currently, the workaround is to do:
from unittest.mock import Mock
obj = Mock(x=1, y="val")
obj.name = "name"
instead of directly assigning the attribute in the constructor.
Has been mentioned in the Stack Overflow community before in https://stackoverflow.com/questions/62552148/how-to-mock-name-attribute-with-unittest-mock-magicmock-or-mock-classes.
Affected code:
https://github.com/python/cpython/blob/4261b6bffc0b8bb5c6d4d80578a81b7520f4aefc/Lib/unittest/mock.py#L1236-L1238
A suggestion would be to rename the current name attribute to mock_name.
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne in Lib/unittest/mock.py ungefähr bei den Zeilen 1236–1238, wo die Namensbehandlung von Mock implementiert ist. Ermittle, wie Konstruktor-Schlüsselwortattribute vom internen Namenswert getrennt werden, und setze dann die Vervollständigung so um, dass Mock(name="name") name als gemocktes Attribut bereitstellt, ohne das bestehende Verhalten zu verlieren.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- testing-qa
- Issue-Typ
- Bug
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 48/100