2015-08-05 5 views
2

Я довольно новый для исправления, и я столкнулся с тем, что не знаю, как исправлять. В принципе, в файле, который я хочу проверить, есть метод difficult_method(). Это выглядит немного как это:Устранение неполадок функции функции

from import_location import User 

def difficult_method(): 
    ids = list_of_ids 
    for id in list_of_ids: 
    try: 
     user = User.query.filter(User.id == user_id).all()[0] 
    except: 
     continue 
    #do lots of stuff 

код я хочу издеваться это User.query.filter(User.id == user_id).all() и, насколько я обеспокоен тем, что может возвращать статический список. Как мне заменить эту строку в коде, которая выглядит примерно так:

from mock import patch 

@patch(#what would go here?) 
def test_difficult_method(): 
    from file_to_test import difficult_method 
    assert difficult_method() returns ... 

ответ

0

Я понял! Ключ в том, чтобы создать класс MockUser, например, так:

user = #creating a user 

class MockFilter(object): 
    def all(self): 
    return [user] 


class MockQuery(object): 

    def filter(self, match): 
    return MockFilter() 


class MockUser(object): 
    query = MockQuery() 
    id = '2' 

Тогда я исправил это в примерно так:

from mock import patch 

@patch('import_location.User', MockUser) 
def test_difficult_method(): 
    from file_to_test import difficult_method 
    assert difficult_method() returns ...