Message277764
In the unittest.mock library, when a Mock object stores the calls made on it in its `mock_calls` attribute, it appears to store references to the call arguments instead of the actual values of the call arguments. In cases where call args are mutable types, this results in the undesirable behavior below:
```python
import mock
arg = ['one']
test_function(arg)
# passes
test_function.assert_has_calls([mock.call(['one'])])
arg += ['two']
test_function(arg)
# fails, even though we just verified the first call above!
test_function.assert_has_calls([
mock.call(['one']),
mock.call(['one','two'])
])
# passes, even though we didn't make the exact same call twice!
test_function.assert_has_calls([
mock.call(['one', 'two']),
mock.call(['one', 'two'])
])
``` |
|
Date |
User |
Action |
Args |
2016-09-30 17:54:38 | Guillaume Chorn | set | recipients:
+ Guillaume Chorn |
2016-09-30 17:54:38 | Guillaume Chorn | set | messageid: <1475258078.84.0.445986439292.issue28318@psf.upfronthosting.co.za> |
2016-09-30 17:54:38 | Guillaume Chorn | link | issue28318 messages |
2016-09-30 17:54:38 | Guillaume Chorn | create | |
|