From f9fae605515affd6ee2d282b495ce1b29dd25232 Mon Sep 17 00:00:00 2001 From: Hasan Ramezani Date: Sat, 5 Dec 2020 20:13:04 +0100 Subject: [PATCH 1/2] Remove duplicate test. --- tests/test_models/test_timestamped_model.py | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/tests/test_models/test_timestamped_model.py b/tests/test_models/test_timestamped_model.py index a303923..04a2283 100644 --- a/tests/test_models/test_timestamped_model.py +++ b/tests/test_models/test_timestamped_model.py @@ -110,20 +110,6 @@ class TimeStampedModelTests(TestCase): self.assertEqual(t1.modified, datetime(2020, 1, 2)) - @parameterized.expand([ - ('list', ['test_field']), - ('tuple', ('test_field',)), - ('set', {'test_field'}), - ]) - def test_save_with_update_fields_updates_modified_even_when_it_is_not_included_in_a(self, _, update_fields): - with freeze_time(datetime(2020, 1, 1)): - t1 = TimeStamp.objects.create() - - with freeze_time(datetime(2020, 1, 2)): - t1.save(update_fields=update_fields) - - self.assertEqual(t1.modified, datetime(2020, 1, 2)) - @parameterized.expand([ ('list', []), ('tuple', ()), From 22cbfb6aeb2dbb04d1d76c4e2b6f933e73b72405 Mon Sep 17 00:00:00 2001 From: Hasan Ramezani Date: Sat, 5 Dec 2020 20:24:07 +0100 Subject: [PATCH 2/2] Rewrite test with subTest and remove parameterized from requirements-test. --- requirements-test.txt | 1 - tests/test_models/test_timestamped_model.py | 56 +++++++++++---------- 2 files changed, 30 insertions(+), 27 deletions(-) diff --git a/requirements-test.txt b/requirements-test.txt index 663d0a8..f442121 100644 --- a/requirements-test.txt +++ b/requirements-test.txt @@ -2,4 +2,3 @@ pytest==6.0.2 pytest-django==3.10.0 psycopg2-binary==2.8.6 pytest-cov==2.10.1 -parameterized==0.7.4 diff --git a/tests/test_models/test_timestamped_model.py b/tests/test_models/test_timestamped_model.py index 04a2283..0d13914 100644 --- a/tests/test_models/test_timestamped_model.py +++ b/tests/test_models/test_timestamped_model.py @@ -2,7 +2,6 @@ from datetime import datetime, timedelta from django.test import TestCase from freezegun import freeze_time -from parameterized import parameterized from tests.models import TimeStamp, TimeStampWithStatusModel @@ -91,41 +90,46 @@ class TimeStampedModelTests(TestCase): self.assertNotEqual(t1.modified, different_date2) self.assertNotEqual(t1.modified, different_date) - @parameterized.expand([ - ('list', ['modified']), - ('tuple', ('modified',)), - ('set', {'modified'}), - ]) - def test_save_with_update_fields_overrides_modified_provided_within_a(self, _, update_fields): + def test_save_with_update_fields_overrides_modified_provided_within_a(self): """ Tests if the save method updated modified field accordingly when update_fields is used as an argument and modified is provided """ - with freeze_time(datetime(2020, 1, 1)): - t1 = TimeStamp.objects.create() + tests = ( + ['modified'], # list + ('modified',), # tuple + {'modified'}, # set + ) - with freeze_time(datetime(2020, 1, 2)): - t1.save(update_fields=update_fields) + for update_fields in tests: + with self.subTest(update_fields=update_fields): + with freeze_time(datetime(2020, 1, 1)): + t1 = TimeStamp.objects.create() - self.assertEqual(t1.modified, datetime(2020, 1, 2)) + with freeze_time(datetime(2020, 1, 2)): + t1.save(update_fields=update_fields) + self.assertEqual(t1.modified, datetime(2020, 1, 2)) - @parameterized.expand([ - ('list', []), - ('tuple', ()), - ('set', set()), - ]) - def test_save_is_skipped_for_empty_update_fields_iterable(self, _, update_fields): - with freeze_time(datetime(2020, 1, 1)): - t1 = TimeStamp.objects.create() + def test_save_is_skipped_for_empty_update_fields_iterable(self): + tests = ( + [], # list + (), # tuple + set(), # set + ) - with freeze_time(datetime(2020, 1, 2)): - t1.test_field = 1 - t1.save(update_fields=update_fields) + for update_fields in tests: + with self.subTest(update_fields=update_fields): + with freeze_time(datetime(2020, 1, 1)): + t1 = TimeStamp.objects.create() - t1.refresh_from_db() - self.assertEqual(t1.test_field, 0) - self.assertEqual(t1.modified, datetime(2020, 1, 1)) + with freeze_time(datetime(2020, 1, 2)): + t1.test_field = 1 + t1.save(update_fields=update_fields) + + t1.refresh_from_db() + self.assertEqual(t1.test_field, 0) + self.assertEqual(t1.modified, datetime(2020, 1, 1)) def test_save_updates_modified_value_when_update_fields_explicitly_set_to_none(self): with freeze_time(datetime(2020, 1, 1)):