Ordering Of Pytest Fixtures And Mock Patch Objects

If you’re using the mock library and pytest’s fixtures, then you might be confused for a second about the ordering. Mock objects go first and then pytests fixtures.

Here is an example:

import mock
import os
import pytest

@pytest.fixture()
def person():
    return Person(fname='test', lname='person')

@mock.patch.object(another, 'example')
@mock.patch.object(os, 'remove')
def test_remove_person_file(mock_remove, mock_example, person):
    # Remove the persons file
    os.remove('{}-{}.txt'.format(person.fname, person.lname))

    mock_remove.assert_called_once_with('test-person.txt')