1. Error for “fixture ‘mocker’ not found”
After running pytest, it reported:
E fixture 'mocker' not found > available fixtures: cache, capfd, capsys, doctest_namespace, mock, mocker, monkeypatch, pytestconfig, record_xml_property, recwarn, request, requests_get, tmpdir, tmpdir_factory > use 'pytest --fixtures [testpath]' for help on them.
The solution is just installing the missing pip package:
pip install pytest-mock
2. How to make sure a function has been called without caring about its arguments?
There are two methods. The first method is using “.called”
...
sender.send_email()
mocker.patch.object(EmailSender, "_email_spec")
assert sender._email_spec.called
The second method is using “mocker.spy()”
...
spy = mocker.spy(sender, "_email_spec")
sender.send_email()
spy.assert_called()