summaryrefslogtreecommitdiff
path: root/tests/backends/base
diff options
context:
space:
mode:
authorHasan Ramezani <hasan.r67@gmail.com>2020-12-10 18:00:57 +0100
committerGitHub <noreply@github.com>2020-12-10 18:00:57 +0100
commit275dd4ebbabbbe758c7219a3d666953d5a7b072f (patch)
treed0534f7047f9ba43525368eda2c121df54801d4c /tests/backends/base
parent5ce31d6a7142ca8c76d6b52fa42b3406b9a8ff48 (diff)
downloaddjango-275dd4ebbabbbe758c7219a3d666953d5a7b072f.tar.gz
Fixed #32178 -- Allowed database backends to skip tests and mark expected failures.
Co-authored-by: Tim Graham <timograham@gmail.com>
Diffstat (limited to 'tests/backends/base')
-rw-r--r--tests/backends/base/test_creation.py62
1 files changed, 62 insertions, 0 deletions
diff --git a/tests/backends/base/test_creation.py b/tests/backends/base/test_creation.py
index 3e29961d21..6c98556f1e 100644
--- a/tests/backends/base/test_creation.py
+++ b/tests/backends/base/test_creation.py
@@ -1,5 +1,6 @@
import copy
import datetime
+import os
from unittest import mock
from django.db import DEFAULT_DB_ALIAS, connection, connections
@@ -107,6 +108,22 @@ class TestDbCreationTests(SimpleTestCase):
with mock.patch.object(creation, '_destroy_test_db'):
creation.destroy_test_db(old_database_name, verbosity=0)
+ @mock.patch.dict(os.environ, {'RUNNING_DJANGOS_TEST_SUITE': ''})
+ @mock.patch.object(BaseDatabaseCreation, 'mark_expected_failures_and_skips')
+ def test_mark_expected_failures_and_skips_call(self, mark_expected_failures_and_skips, *mocked_objects):
+ """
+ mark_expected_failures_and_skips() isn't called unless
+ RUNNING_DJANGOS_TEST_SUITE is 'true'.
+ """
+ test_connection = get_connection_copy()
+ creation = test_connection.creation_class(test_connection)
+ if connection.vendor == 'oracle':
+ # Don't close connection on Oracle.
+ creation.connection.close = mock.Mock()
+ with mock.patch.object(creation, '_create_test_db'):
+ creation.create_test_db(verbosity=0, autoclobber=True, serialize=False)
+ self.assertIs(mark_expected_failures_and_skips.called, False)
+
class TestDeserializeDbFromString(TransactionTestCase):
available_apps = ['backends']
@@ -188,3 +205,48 @@ class TestDeserializeDbFromString(TransactionTestCase):
data = connection.creation.serialize_db_to_string()
self.assertIn('"model": "backends.schoolclass"', data)
self.assertIn('"year": 1000', data)
+
+
+class SkipTestClass:
+ def skip_function(self):
+ pass
+
+
+def skip_test_function():
+ pass
+
+
+def expected_failure_test_function():
+ pass
+
+
+class TestMarkTests(SimpleTestCase):
+ def test_mark_expected_failures_and_skips(self):
+ test_connection = get_connection_copy()
+ creation = BaseDatabaseCreation(test_connection)
+ creation.connection.features.django_test_expected_failures = {
+ 'backends.base.test_creation.expected_failure_test_function',
+ }
+ creation.connection.features.django_test_skips = {
+ 'skip test class': {
+ 'backends.base.test_creation.SkipTestClass',
+ },
+ 'skip test function': {
+ 'backends.base.test_creation.skip_test_function',
+ },
+ }
+ creation.mark_expected_failures_and_skips()
+ self.assertIs(
+ expected_failure_test_function.__unittest_expecting_failure__,
+ True,
+ )
+ self.assertIs(SkipTestClass.__unittest_skip__, True)
+ self.assertEqual(
+ SkipTestClass.__unittest_skip_why__,
+ 'skip test class',
+ )
+ self.assertIs(skip_test_function.__unittest_skip__, True)
+ self.assertEqual(
+ skip_test_function.__unittest_skip_why__,
+ 'skip test function',
+ )