18.10. Test Smoke Testing

18.10.1. Use Case - 1

import logging
from django.contrib.auth.models import User
from django.test import TestCase
from django.test.client import Client


class Test(TestCase):
    assert_http_200 = []

    def setUp(self):
        self.logger = logging.getLogger(__name__)
        self.user = User.objects.create_superuser('test', 'test@example.com', 'test')
        self.client.login(username='test', password='test')

    def tearDown(self):
        self.client.logout()
        self.user.delete()

    def test_http_200(self):
        for url in self.assert_http_200:
            response = self.client.get(url)

            if response.status_code != 200:
                self.logger.error(f'{response.status_code} {url}')
                raise AssertionError(f'HTTP {response.status_code} for "{url}"')
            else:
                self.logger.info(f'{response.status_code} {url}')

... from myproject.tests import Test
...
... class TestShop(Test):
...     assert_http_200 = [
...         '/admin/',
...         '/admin/shop/',
...         '/admin/shop/customer/',
...         '/admin/shop/customer/add/',
...         '/admin/shop/customer/edit/1/',
...         '/admin/shop/address/',
...         '/admin/shop/address/add/',
...         '/admin/shop/address/edit/1/',
...         '/admin/shop/product/',
...         '/admin/shop/product/add/',
...         '/admin/shop/product/edit/1/',
...         '/admin/shop/order/',
...         '/admin/shop/order/add/',
...         '/admin/shop/order/edit/1/',
...     ]