Я новичок в Django и сейчас читаю книгу «Разработка через тестирование на Python».
Однако, когда я хочу проверить проверку пустого значения, модульный тест в порядке, но функциональный тест не пройден.
Я сейчас использую Django 2.1, Python 3. Я старался изо всех сил, чтобы выяснить причину проблемы, но все еще не прошел функциональный тест
models.py
...
class Item(models.Model):
text = models.TextField(default='')
list = models.ForeignKey(List, default=None, on_delete=models.CASCADE)
views.py
...
def new_list(request):
list_ = List.objects.create()
item = Item.objects.create(text=request.POST['item_text'],list=list_)
try:
item.full_clean()
item.save()
except ValidationError:
list_.delete()
error = "You can't have an empty list item"
return render(request, 'home.html', {"error": error})
return redirect(list_)
test_views.py (Юнит-тест успешен)
...
def test_validation_errors_are_sent_back_to_home_page_template(self):
response = self.client.post('/lists/new', data={'item_text':''})
self.assertEqual(response.status_code, 200)
self.assertTemplateUsed(response, 'home.html')
expected_error = escape("You can't have an empty list item")
self.assertContains(response, expected_error)
test_list_item_validation.py (Сбой функционального теста)
...
def test_cannot_add_empty_list_items(self):
self.browser.get(self.live_server_url)
self.browser.find_element_by_id('id_new_item').send_keys(Keys.ENTER)
error = self.browser.find_element_by_css_selector('.has-error')
self.assertEqual(error.text, "You can't have an empty list item")
base.html (все html-файлы начинаются с этого)
...
{% if error %}
<div class="form-group has-error">
<span class="help-block">{{ error }}</span>
</div>
{% endif %}
Я ожидаю, что и модульный тест, и функциональный тест верны, но фактический результат - модульный тест пройден, но функциональный тест не пройден