Тест Django провалился - PullRequest
0 голосов
/ 23 июня 2018

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

Traceback (most recent call last):
  File "/home/abc/Desktop/python-environments/second/tutorial/myproject/boards/tests.py", line 26, in test_home_view_contains_link_to_topics_page
self.assertContains(self.response, 'href="{0}"'.format(board_topics_url))
  File "/home/abc/Desktop/python-environments/second/lib/python3.5/site-packages/django/test/testcases.py", line 369, in assertContains
self.assertTrue(real_count != 0, msg_prefix + "Couldn't find %s in response" % text_repr)
AssertionError: False is not true : Couldn't find 'href="/boards/1/"' in response

вот мои файлы

urls.py

from django.urls import path
from . import views


app_name = 'boards'
urlpatterns = [
path('', views.home, name='home'),
path('<int:d>/', views.topics, name='topics'),

]

views.py

from django.shortcuts import render, get_object_or_404
from .models import Board, topic


def home(request):
    boards = Board.objects.all()
    return render(request, 'boards/index.html', {'boards': boards})

def topics(request, d):
    board = get_object_or_404(Board, id=d)
    return render(request, 'boards/topics.html', {'boards': board})

index.html

{% load static %}<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Boards</title>
    <link rel="stylesheet" href="{% static 'boards/css/bootstrap.min.css'     %}">
  </head>
  <body>
    <div class="container">
      <ol class="breadcrumb my-4">
        <li class="breadcrumb-item active">Boards</li>
      </ol>
      <table class="table">
        <thead class="thead-inverse">
          <tr>
            <th>Board</th>
            <th>Posts</th>
            <th>Topics</th>
            <th>Last Post</th>
          </tr>
        </thead>
        <tbody>
          {% for board in boards %}
            <tr>
              <td>
                  <a href = "{% url 'boards:topics' board.id %}"> {{board.Name }}</a>
                <small class="text-muted d-block">{{ board.description}}</small>
              </td>
              <td class="align-middle">0</td>
              <td class="align-middle">0</td>
              <td></td>
            </tr>
          {% endfor %}
        </tbody>
      </table>
    </div>
  </body>
</html>

и, наконец, tests.py

from django.test import TestCase
from django.urls import reverse, resolve
from .models import Board
from .views import topics, home


class HomeTests(TestCase):

    def setUp(self):
        self.board = Board.objects.create(Name='Python',description='Python discussion board')
        self.response = self.client.get(reverse('boards:home'))

def test_home_view_status_code(self):
    self.assertEquals(self.response.status_code, 200)

def test_home_url_resolves_to_home_view(self):
    view = resolve('/boards/')
    self.assertEquals(view.func, home)

def test_home_view_contains_link_to_topics_page(self):
    board_topics_url = reverse('boards:topics', kwargs={'d': self.board.id})
    self.assertContains(self.response, 'href="{0}"'.format(board_topics_url))

1 Ответ

0 голосов
/ 23 июня 2018

self.assertContains (self.response, 'HREF = "{0}"' формат (board_topics_url)). * * Тысяча два

Разве вы не забыли пробелы вокруг =? В любом случае, вы можете открыть свою страницу в браузере и проверить ее HTML-код.

...