@Osmose showed me a much cleaner way of doing this sort of thing: because Mock automatically returns new Mock instances, you can avoid having to explicitly set up other mocks in advance, like I had been doing before. He also explained that there's usually no need to specify the return value, since you can just use the return_value attr on the mock directly. I'd recommend replacing lines 97-125 with something along the lines of the following:
```python 
       # attachment is within the size limit
        mock_attachment = Mock(
            content_type='text/plain',
            _size=(legal_forms.FRAUD_REPORT_FILE_SIZE_LIMIT))

        # make sure name attribute is treated as string
        mock_attachment.name = 'img.jpg'

        form = FraudReportForm(self.data, {'attachment': mock_attachment})

        # trigger cleaning form data
        ok_(form.is_valid())

        # submit form
        request = self.factory.get('/')
        submit_form(request, form)

        # make sure attachment was attached to email
        mock_email_message.return_value.attach.assert_called_once_with(
            'img.jpg', mock_attachment.read.return_value, 'text/plain')
        mock_attachment.read.assert_called_once_with()

        # make sure email was sent
        mock_email_message.return_value.send.assert_called_once_with()
```