diff --git a/tests/base_test_mixins.py b/tests/base_test_mixins.py index 91f9a57373e52b45f6f1b0d4a88675ee9e520722..aafd08462355ad4b5a4e55fce710f972b9cb32fe 100644 --- a/tests/base_test_mixins.py +++ b/tests/base_test_mixins.py @@ -332,10 +332,6 @@ class SuperuserCreateMixin(ResponseContextMixin): cls.settings_git_root_override.enable() super(SuperuserCreateMixin, cls).setUpTestData() - @classmethod - def tearDownClass(cls): # noqa - super(SuperuserCreateMixin, cls).tearDownClass() - @classmethod def create_superuser(cls): return get_user_model().objects.create_superuser( @@ -603,11 +599,6 @@ class CoursesTestMixinBase(SuperuserCreateMixin): cls.course_qset = Course.objects.all() - @classmethod - def tearDownClass(cls): - cls.c.logout() - super(CoursesTestMixinBase, cls).tearDownClass() - @classmethod def create_user(cls, create_user_kwargs): user, created = get_user_model().objects.get_or_create( @@ -1405,11 +1396,9 @@ class FallBackStorageMessageTestMixin(object): def setUp(self): # noqa super(FallBackStorageMessageTestMixin, self).setUp() - self.settings_override = override_settings(MESSAGE_STORAGE=self.storage) - self.settings_override.enable() - - def tearDown(self): # noqa - self.settings_override.disable() + self.msg_settings_override = override_settings(MESSAGE_STORAGE=self.storage) + self.msg_settings_override.enable() + self.addCleanup(self.msg_settings_override.disable) def get_listed_storage_from_response(self, response): return list(self.get_response_context_value_by_name(response, 'messages')) @@ -1494,14 +1483,10 @@ class SubprocessRunpyContainerMixin(object): "provide PY3 envrionment") super(SubprocessRunpyContainerMixin, cls).setUpClass() - cls.faked_container_patch = mock.patch( - "course.page.code.SPAWN_CONTAINERS_FOR_RUNPY", False) - cls.faked_container_patch.start() python_executable = os.getenv("PY_EXE") if not python_executable: - import sys python_executable = sys.executable import subprocess @@ -1519,17 +1504,27 @@ class SubprocessRunpyContainerMixin(object): stderr=subprocess.DEVNULL ) - cls.faked_container_patch.start() + def setUp(self): + super(SubprocessRunpyContainerMixin, self).setUp() + self.faked_container_patch = mock.patch( + "course.page.code.SPAWN_CONTAINERS_FOR_RUNPY", False) + self.faked_container_patch.start() + self.addCleanup(self.faked_container_patch.stop) @classmethod def tearDownClass(cls): # noqa super(SubprocessRunpyContainerMixin, cls).tearDownClass() + + from course.page.code import SPAWN_CONTAINERS_FOR_RUNPY + # Make sure SPAWN_CONTAINERS_FOR_RUNPY is reset to True + assert SPAWN_CONTAINERS_FOR_RUNPY if sys.platform.startswith("win"): # Without these lines, tests on Appveyor hanged when all tests - # finished. However, On nix platforms, these lines resulted in test + # finished. + # However, On nix platforms, these lines resulted in test # failure when there were more than one TestCases which were using - # this mixin. - cls.faked_container_patch.stop() + # this mixin. So we don't kill the subprocess, and it won't bring + # bad side effects to remainder tests. cls.faked_container_process.kill() diff --git a/tests/test_enrollment.py b/tests/test_enrollment.py index 8adfdfbe878ce0506e227e3653bd4e50b0ae4cc4..a0fd930e601773f1cadc4ffbedb6a6694d609e92 100644 --- a/tests/test_enrollment.py +++ b/tests/test_enrollment.py @@ -157,9 +157,7 @@ class BaseEmailConnectionMixin: self.settings_email_connection_override = ( override_settings(**kwargs)) self.settings_email_connection_override.enable() - - def tearDown(self): - self.settings_email_connection_override.disable() + self.addCleanup(self.settings_email_connection_override.stop) class EnrollmentTestBaseMixin(SingleCourseTestMixin, diff --git a/tests/utils.py b/tests/utils.py index 9f487905c62c27de602fcb0d77c8419214fd33fa..6851b649aa86b508e317adb405a6934862832701 100644 --- a/tests/utils.py +++ b/tests/utils.py @@ -26,11 +26,10 @@ class BaseEmailBackendTestsMixin(object): email_backend = None def setUp(self): # noqa - self.settings_override = override_settings(EMAIL_BACKEND=self.email_backend) - self.settings_override.enable() - - def tearDown(self): # noqa - self.settings_override.disable() + self.email_backend_settings_override = ( + override_settings(EMAIL_BACKEND=self.email_backend)) + self.email_backend_settings_override.enable() + self.addCleanup(self.email_backend_settings_override.disable) def assertStartsWith(self, first, second): # noqa if not first.startswith(second): @@ -104,16 +103,6 @@ class LocmemBackendTestsMixin(BaseEmailBackendTestsMixin): mail.outbox = [] -class BaseEmailBackendTestsMixin(object): - email_backend = None - - def setUp(self): # noqa - self.settings_override = override_settings(EMAIL_BACKEND=self.email_backend) - self.settings_override.enable() - - def tearDown(self): # noqa - self.settings_override.disable() - # }}}