Я хочу написать модульный тест, который выполняет HTTP-запросы напрямую (вместо использования django.test.client.Client).
Если вам интересно, почему - это потому, что я хочу протестировать API Thrift-over-HTTP, который я предоставляю в своем приложении Django, - и я хочу использовать клиент Thrift в модульном тесте.
Проблема в том, что во время тестов сервер фактически не запускается. При использовании django.test.client.Client он просто вызывает функции представления вместо фактического выполнения HTTP-запроса. (Пожалуйста, поправьте меня, если я ошибаюсь.)
Итак, как лучше всего заставить тестовую среду запустить HTTP-сервер?
Я попытался написать скрипт bash, который делает что-то вроде этого:
./manage.py testserver --addrport 7000 &
PID=$!
sleep 5
./manage.py test --no-input
kill $PID
Но это грязно (и на самом деле не работает), потому что 1) мне нужен сон (иначе тест начнется до инициализации БД тестовым сервером) и 2) тест попытается снова инициализировать базу данных (после того, как тестовый сервер уже инициализировал его).
Есть ли другие способы решения этой проблемы?
Спасибо.