2015-09-22 4 views
2

Я пытаюсь понять лучшие практики по загрузке тестовых данных Django. У меня есть простой API, который содержит очень длинные списки возвращенных данных JSON, и я хочу написать поведенческий тест, чтобы убедиться, что он работает правильно.Практические рекомендации по загрузке тестовых данных Django

Светильники, или что-то вроде них, кажется, что они должны сделать трюк - но это выглядит как Джанго светильники предназначены для высева базы данных для испытаний, а не более общей выборки/сериализованные данных - например, Я не смог найти API, который позволяет мне загружать данные из одного конкретного прибора.

Какой общепринятый способ для меня вручную хранить/обновлять файл на диске, который содержит данные, которые будут загружены, и self.assertEqual'ed против в моих тестовых случаях?

Любые советы, оцененные - спасибо!

ответ

1

вы должны взглянуть на factory_boy или django model mommy. Они являются предпочтительным способом загрузки светильников по сравнению с загрузкой по умолчанию, поддерживаемой django. Но если вам действительно нужно использовать Джанго по умолчанию прибор,

class SiteTests(TestCase): 
    #This is the fixture: 
    #- fields: {content: lots of stuff, query: test, title: 
    test, url: 'http://google.com'} 
    #model: mine.site 
    #pk: 1 
    fixtures = ['mine'] 

mine, где это имя файла прибора. Посмотрите на http://django-testing-docs.readthedocs.org/en/latest/fixtures.html о том, как это делается.

0

Общепринятый способ использования светильников, как правило, делает ваши тесты очень медленными и очень медленными, если вы используете TransactionTestCase вместо TestCase. Хотя есть библиотеки, которые утверждают, что облегчают боль, их процесс обучения одинаково болезнен. Так каково мое решение?

Postgresql COPY TO или Mysql SELECT INTO OUTFILE и погрузка их по методу setUp.

def setUp(self): 
    TestCase.setUp(self) 

    cursor = connection.cursor() 
    cursor.execute("COPY myapp_mymodel(id, field1, ...) FROM '{0}' CSV ".format(
      os.path.dirname(__file__) + '/data/mymodel.csv')) 

Пуристы строят несколько кирпичных кланов, но это безболезненно и быстро.