2015-09-03 6 views
0

У меня есть метод экземпляра в классе формы Django, который возвращает объект Python из службы платежей, если он успешный.С трудом насмешливый объект, возвращаемый исправленной функцией

Объект имеет свойство id, которое затем сохраняется на экземпляре модели Django.

У меня возникли трудности с получением издеваемого объекта, чтобы вернуть его свойство .id.

# tests.py 

class DonationFunctionalTest(TestCase): 

    def test_foo(self): 

     with mock.patch('donations.views.CreditCardForm') as MockCCForm: 
      MockCCForm.charge_customer.return_value = Mock(id='abc123') 

      # The test makes a post request to the view here. 

      # The view being tested calls: 

      # charge = credit_card_form.charge_customer() 
      # donation.charge_id = charge.id 
      # donation.save() 

Однако:

print donation.charge_id 

# returns 
u"<MagicMock name='CreditCardForm().charge_customer().id' 

Я ожидал увидеть "ABC123" для donation.charge_id, но вместо этого я вижу юникода представление MagicMock. Что я делаю не так?

ответ

1

Понял работает, делая зашивки немного по-другому:

@mock.patch('donations.views.CreditCardForm.create_card') 
@mock.patch('donations.views.CreditCardForm.charge_customer') 
def test_foo(self, mock_charge_customer, mock_create_card): 

    mock_create_card.return_value = True 
    mock_charge_customer.return_value = MagicMock(id='abc123') 

    # remainder of code 

Теперь идентификатор соответствует тому, что я ожидал. Я все равно хотел бы знать, что я сделал неправильно в предыдущем коде.

Смежные вопросы