@@ -162,17 +162,16 @@ class or instance) that acts as the specification for the mock
162
162
for name in self ._spec :
163
163
# Create a new mock object for each attribute in the spec.
164
164
setattr (self , name , Mock ())
165
- if return_value :
166
- self .return_value = return_value
165
+ self .return_value = return_value
167
166
if side_effect :
168
167
if type (side_effect ) in (str , list , tuple , set , dict ):
169
168
# If side_effect is an iterable then make it an iterator.
170
169
self .side_effect = iter (side_effect )
171
170
else :
172
171
self .side_effect = side_effect
173
- # The _mock_value is used to ensure the same mock object is returned if
174
- # no return_value or side_effect is specified.
175
- self ._mock_value = None
172
+ # The return_value is used to ensure the same result is always returned
173
+ # when calling the mock object and if no side_effect is specified.
174
+ self .return_value = return_value
176
175
self .reset_mock ()
177
176
for key , value in kwargs .items ():
178
177
setattr (self , key , value )
@@ -314,13 +313,11 @@ def __call__(self, *args, **kwargs):
314
313
elif callable (self .side_effect ):
315
314
return self .side_effect (* args , ** kwargs )
316
315
raise TypeError ("The mock object has an invalid side_effect." )
317
- if hasattr (self , "return_value" ):
318
- return self .return_value
319
- else :
320
- # Return a mock object (ensuring it's the same one each time).
321
- if not self ._mock_value :
322
- self ._mock_value = Mock ()
323
- return self ._mock_value
316
+ # Return the return_value or a mock object (ensuring it's the same one
317
+ # each time).
318
+ if self .return_value is None :
319
+ self .return_value = Mock ()
320
+ return self .return_value
324
321
325
322
def __getattr__ (self , name ):
326
323
"""
@@ -423,17 +420,16 @@ class or instance) that acts as the specification for the mock
423
420
for name in self ._spec :
424
421
# Create a new mock object for each attribute in the spec.
425
422
setattr (self , name , Mock ())
426
- if return_value :
427
- self .return_value = return_value
423
+
428
424
if side_effect :
429
425
if type (side_effect ) in (str , list , tuple , set , dict ):
430
426
# If side_effect is an iterable then make it an iterator.
431
427
self .side_effect = iter (side_effect )
432
428
else :
433
429
self .side_effect = side_effect
434
- # The _mock_value is used to ensure the same mock object is returned if
435
- # no return_value or side_effect is specified.
436
- self ._mock_value = None
430
+ # The return_value is used to ensure the same result is always returned
431
+ # when calling the mock object and if no side_effect is specified.
432
+ self .return_value = return_value
437
433
self .reset_mock ()
438
434
for key , value in kwargs .items ():
439
435
setattr (self , key , value )
@@ -578,13 +574,11 @@ async def __call__(self, *args, **kwargs):
578
574
elif callable (self .side_effect ):
579
575
return self .side_effect (* args , ** kwargs )
580
576
raise TypeError ("The mock object has an invalid side_effect." )
581
- if hasattr (self , "return_value" ):
582
- return self .return_value
583
- else :
584
- # Return a mock object (ensuring it's the same one each time).
585
- if not self ._mock_value :
586
- self ._mock_value = AsyncMock ()
587
- return self ._mock_value
577
+ # Return the return_value or a mock object (ensuring it's the same one
578
+ # each time).
579
+ if self .return_value is None :
580
+ self .return_value = AsyncMock ()
581
+ return self .return_value
588
582
589
583
def __getattr__ (self , name ):
590
584
"""
0 commit comments