This issue tracker has been migrated to GitHub,
and is currently read-only.
For more information,
see the GitHub FAQs in the Python's Developer Guide.
This issue tracker has been migrated to GitHub,
and is currently read-only.
For more information,
see the GitHub FAQs in the Python's Developer Guide.
Created on 2022-04-04 03:24 by himkt, last changed 2022-04-11 14:59 by admin.
Messages (3) | |||
---|---|---|---|
msg416650 - (view) | Author: himkt (himkt) | Date: 2022-04-04 03:24 | |
Currently documentation says we can check call_args_list by providing a list of tuples of arguments. ``` >>> expected = [(), ((3, 4),), ({'key': 'fish', 'next': 'w00t!'},)] >>> mock.call_args_list == expected True ``` (from https://docs.python.org/3.11/library/unittest.mock.html#unittest.mock.Mock.call_args_list) However, I think we have to wrap all arguments with `call`. I'd happy to send a patch if it should be fixed. ### Reproduce: ``` import time from unittest.mock import call from unittest.mock import patch with patch("time.sleep") as mock_obj: time.sleep(1) time.sleep(2) print("mock_obj.call_args_list") print(mock_obj.call_args_list) print("mock_obj.call_args_list == [(1,), (2,)]") print(mock_obj.call_args_list == [(1,), (2,)]) print("mock_obj.call_args_list == [call(1,), call(2,)]") print(mock_obj.call_args_list == [call(1,), call(2,)]) ``` ``` > python demo.py 2022-04-04 12:03:18 mock_obj.call_args_list [call(1), call(2)] mock_obj.call_args_list == [(1,), (2,)] False mock_obj.call_args_list == [call(1,), call(2,)] True ``` ### Links - Documentation in repo: https://github.com/python/cpython/blob/4216dce04b7d3f329beaaafc82a77c4ac6cf4d57/Doc/library/unittest.mock.rst - Documentation in page: https://docs.python.org/3.11/library/unittest.mock.html#unittest.mock.Mock.call_args_list |
|||
msg416652 - (view) | Author: himkt (himkt) | Date: 2022-04-04 03:43 | |
So sorry, documentation is not wrong. It only need to wrap an argument when it is a singular value. But I'm still wondering if we can unify documentation to wrap `call` (e.g. https://github.com/himkt/cpython/blob/main/Doc/library/unittest.mock-examples.rst#checking-multiple-calls-with-mock does it). |
|||
msg416653 - (view) | Author: himkt (himkt) | Date: 2022-04-04 05:58 | |
> It only need to wrap an argument when it is a singular value. It is also wrong..., sorry. To compare a single value, I should have passed a tuple of tuples. ``` > python demo.py 2022-04-04 14:56:41 mock_obj.call_args_list [call(1), call(2)] mock_obj.call_args_list == [(1,), (2,)] False mock_obj.call_args_list == [call(1,), call(2,)] True mock_obj.call_args_list == [((1,),), ((2,),)] True ``` |
History | |||
---|---|---|---|
Date | User | Action | Args |
2022-04-11 14:59:58 | admin | set | github: 91365 |
2022-04-04 05:58:03 | himkt | set | messages: + msg416653 |
2022-04-04 03:43:51 | himkt | set | messages: + msg416652 |
2022-04-04 03:24:22 | himkt | create |