2015-03-13 2 views
1

Я пишу сложное веб-приложение в Django. Есть много компонентов. В частности, два сервера Django (позволяет называть это Server) и сервером приложений C++ (позволяет называть это Calculator), который обслуживает вычисления до Server. Когда Server хочет выполнить расчет, он отправляет команду в сокет, на котором прослушивает Calculator. Как это:Django WebServer во время тестирования

{ 
    "command": "doCalculations" 
} 

Теперь Calculator может потребоваться различные части информации в разное время, чтобы сделать свою работу. Поэтому вместо передачи данных непосредственно в Calaculator в команде, необходимо до Calculator запросить то, что ему нужно. Она делает это путем вызова RESTful API на Server:

https://Server/getStuff?with=arguments 

Calculator затем использует данные из этого вызова, чтобы сделать свои расчеты, и реагировать на Server с ответом.

Проблемы начинаются, когда я пытаюсь выполнить модульное тестирование с использованием Djantos unittest framework. Я установил кучу структур данных в своем тесте, но когда Server звонит Calculator, он должен иметь эти данные в REST API, так что Calculator может получить то, что ему нужно. Проблема в том, что тестовая среда Django не разворачивает веб-сервер, и если я делаю это вручную, он считывает данные из реальной базы данных, а не в тестовый файл.

Кто-нибудь знает, как запустить единичный тест с данными, доступными для внешних людей/процессов?

Я надеюсь, что имеет смысл ...

ответ

1

Вам необходимо указать приборы для загрузки в тестовом классе.

https://docs.djangoproject.com/en/1.7/topics/testing/tools/#fixture-loading

class MyTest(TestCase): 
    fixtures = ['data.json'] 

    def setUp(self): 
     # do stuff 

    def tearDown(self): 
     # do stuff 

Где data.json можно получить с помощью python manage.py dumpdata.

Он будет заполнен данными из вашего основного db в формате JSON.

data.json должно существовать в папке fixtures приложения, которое вы тестируете. (При необходимости создайте).

+0

спасибо большое за ответ! Я не знал о светильниках. Я сейчас беру свалку БД, когда мы говорим. Погрузите приборы, чтобы мой сервер приложений («Калькулятор», как я его называл), чтобы поговорить с django во время теста и просмотреть эти данные через REST API? – DrBards

+0

Да, сервер Django сможет использовать те же данные во время теста, которые у вас есть в вашем db сейчас. – Kedar

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