Я пишу приложение Django, которое использует REST api, который я создал. Цель состоит в том, чтобы доказать использование вариантов использования api с помощью веб-приложения. На мой взгляд, поэтому я вызываю api, используя библиотеку python-запросов следующим образом:
def my_view_method(request):
if request.method == 'POST':
form = MyForm(request.POST)
if form.is_valid():
data = form.cleaned_data
data_to_post = {
'fieldA': data.get('fieldA_in_form'),
'fieldB': data.get('fieldB_in_form'),
}
post_url = "http://%s/%s/" % (request.get_host(), 'entries')
logger.info("request api url: "+ post_url)
r = requests.post(post_url, data=data_to_post)
return HttpResponseRedirect('/')
else:
form = MyForm()
return render(request, 'myview.html', { 'form': form })
Я проверил с помощью Unit Tests, что POSTing to/entries/с достоверными данными приводит к правильным обновлениям базы данных.
url = '/entries/'
#verify initial db state
data = { 'fieldA': value1, 'fieldB': value2 }
response = self.client.post(url, data, format='json')
# verify db was updated
В моих функциональных тестах я использую LiveServerTestCase и взаимодействую с Формой. Когда тест отправляет форму, на вкладке браузера отображается "Подключение..." в заголовке, и тестовый пример зависает. Это было не так, когда я напрямую взаимодействовал с базой данных вместо вызова api с использованием запросов, поэтому это должно быть источником задержки.
Есть ли что-то о том, как работает LiveServerTestCase, что я здесь не понимаю?