import logging from django.urls import reverse, NoReverseMatch from django.test import TestCase, Client from boards import urls logger = logging.getLogger(__name__) HTTP_CODE_OK = 200 EXCLUDED_VIEWS = { 'banned', 'get_thread_diff', 'api_sync_pull', } class ViewTest(TestCase): def test_all_views(self): """ Try opening all views defined in ulrs.py that don't need additional parameters """ client = Client() for url in urls.urlpatterns: try: view_name = url.name if view_name in EXCLUDED_VIEWS: logger.debug('View {} is excluded.'.format(view_name)) continue logger.debug('Testing view %s' % view_name) try: response = client.get(reverse(view_name)) self.assertEqual(HTTP_CODE_OK, response.status_code, 'View not opened: {}'.format(view_name)) except NoReverseMatch: # This view just needs additional arguments pass except AttributeError: # This is normal, some views do not have names pass