2014-07-13 2 views
0

내가 파이썬 모의 라이브러리를 사용하여 장고 모델에 모의 방법이 그런 짓을하려고하는 방법 :장고 모델 체인 방법을 조롱

# file: tasks.py 
def delete_ads(user):  
    # works fine and return a list of 4 MagicMock objects 
    ads = Classifieds.objects.filter(
     user=user 
    ) 

# file: tests.py 
def test_delete_ads(): 
    return_list = [MagicMock(name='1'), MagicMock(name='2'), MagicMock(name='3'), MagicMock(name='4')] 

    with patch('user.tasks.Classifieds') as classified_mock: 
     classified_mock.objects.filter.return_value = return_value 

위의 코드가 잘 작동을하지만, 하나의 MagicMock를 반환 시작 오브젝트 나는이 내 코드를 변경 후 :

# file: tasks.py 
def delete_ads(user):  
    # works fine and return a list of 4 MagicMock objects 
    ads = Classifieds.objects.filter(
     user=user 
    ).order_by('-added') 

# file: tests.py 
def test_delete_ads(): 
    return_list = [MagicMock(name='1'), MagicMock(name='2'), MagicMock(name='3'), MagicMock(name='4')] 

    with patch('user.tasks.Classifieds') as classified_mock: 
     classified_mock.objects.filter.order_by.return_value = return_value 

가 나는 방법은 장고 모델을 호출 체인입니다 경우에도 제대로이 작업을 수행 할 수있는 어쨌든이 있나요?

+0

질문에 많은 오타가 있습니다. 이 코드가 귀하의 코드에도 포함되지 않았습니까? – Dunes

+0

@Dunes 그래, 나는 오타가 내 코드에 없다는 것을 확신한다. 나는 이것을 별도로 입력했다. – Rafay

답변

1

조롱 된 함수의 반환 값을 조롱 할 때 코드에서 호출되는 것처럼 함수를 조롱해야합니다. parent.childparent 모의에 child이라는 속성을 만듭니다. 반면 parent().child은 조롱 된 반환 값 parent()child이라는 특성을 만듭니다.