Mario Corchero <marioc...@gmail.com> added the comment:

If this is to be done we should not change those tests, I am sure there is code 
validating calls relying on its "tupleness". Example:

```

>>> import unittest.mock
>>> m = unittest.mock.Mock()
>>> m(1)
>>> m(2, a=1) 
>>> m.assert_has_calls([
...   ((1,), {}),
...   ((2,), {'a':1}),
... ])

```

This is documented here: 
https://github.com/python/cpython/blob/0d12672b30b8c6c992bef7564581117ae83e11ad/Lib/unittest/mock.py#L1993

On the addition in general,
I cannot really comment on the "call(x=1).foo == call(x=2).foo" or how that is 
supposed to work, I've used those "nesting calls" minimally. I would try to get 
a hold of Michael Ford.

As a note, I think nesting calls in unittest.mock.call is supposed to be used 
only via the 
https://docs.python.org/3/library/unittest.mock.html#unittest.mock.call.call_list
 method and for calls only.

See:

```
>>> call(x=1).foo(z=1).call_list() == call(x=1).foo(z=1).call_list()
True
>>> call(x=2).foo(z=1).call_list() == call(x=1).foo(z=1).call_list()
False
```

which "works as expected".

Having support for:

```call(x=1).foo == call(x=2).foo``` is kind of trying to validate an attribute 
has been accessed, which is a different thing from what mock.calls seems to be 
doing at the moment. It could be added I guess, but I don't see how do can you 
use that in `mock.assert_has_calls` for example. What is the "real life" issue 
that you faced with this issue? Because creating and comparing calls yourself 
is not something that is usually done, I guess you compared it to a mock call.

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue35226>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to