Почему django можно протестировать без запуска сервера? - PullRequest
0 голосов
/ 19 февраля 2020

Я хочу проверить достижимость домашней страницы демонстрационного приложения.

Итак, я делаю это:

from django.test import TestCase

class TestHomePageView(TestCase):
    def test_reachable_home(self):
        response = self.client.get('/home/')
        self.assertEqual(response.status_code, 200)

и views.py

from django.shortcuts import render

def home_view(request):
    return render(request, 'home.html', {})

home.html прост:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Home</title>
</head>
<body>
    Hi, circleci and django
</body>
</html>

и urls.py:

from django.contrib import admin
from django.urls import path

from demo_app.views import home_view

urlpatterns = [
    path('admin/', admin.site.urls),
    path('home/', home_view)
]

Это действительно простое демо-приложение.

Что мне интересно «Почему я могу проверить код состояния без запуска сервера django?» Просто просто $ python manage.py test без $ python manage.py runserver

и получите результат теста:

$ python manage.py test
Creating test database for alias 'default'...
System check identified no issues (0 silenced).
.
----------------------------------------------------------------------
Ran 1 test in 0.011s

OK
Destroying test database for alias 'default'...

Любая идея или предложение приветствуется, спасибо.

1 Ответ

1 голос
/ 19 февраля 2020

Тестирование позволяет вам изменять свой код с большей уверенностью: тесты в порядке, вы модифицируете свой код, если тесты все еще в порядке, то вы ничего не сломали.

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

Framworks и языки обеспечивают более легкие средства тестирования, поэтому тесты более гибкие и работают быстрее.

Кроме того, вы хотите проверить свой код, а не другие, если ваши тесты проходят через http, вы также проверяете свой http-сервер.

Кроме того, HTTP - это транспортный протокол, мы не не требуется транспортный протокол для предоставления аргументов функциям, чтобы проверить, что он ведет себя так, как задумано.

Подводя итог, вы хотите, чтобы у вас была возможность часто выполнять свой тест, чем быстрее, тем больше вы можете Запустите свои тесты, плюс вы хотите протестировать только ваш код, а не код вашего веб-сервера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...