New submission from JonathanHuot:

Mock "assert_called_with" does not contain a possibility to verify if "self" or 
"cls" is used when mock is called.

So, in unittests, all tests are passing but code is broken. Example :


Steps to reproduce:
==================

class Something(object):
    def foobar(self):
        pass

    def foo(self):
        self.foobar()

    def bar(self):
        Something.foobar()  # this is broken


from unittest import mock
x = mock.Mock(spec=Something)
x.foo()
x.foo.assert_called_with()
x.bar()
x.bar.assert_called_with()  # this assertion pass!

# real code 
z = Something()
z.foo()
z.bar()  # raise exception

----------
components: Library (Lib)
messages: 302677
nosy: jonathan.huot
priority: normal
severity: normal
status: open
title: Mock called_with does not ensure self/cls argument is used
type: behavior
versions: Python 3.3, Python 3.4, Python 3.5, Python 3.6, Python 3.7

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

Reply via email to