A plugin to show lint errors for IW
Project description
flake8_iw
IW01: Use of patch
Lint check to prevent the use of patch
directly.
Recommendation: Use PatchingTestCase
/ PatchingTransactionTestCase
instead
Correct
from instawork.tests import PatchingTestCase
class SignUpUpdatedTests(PatchingTestCase):
def setUp(self):
self.mock_call = self.patch("apps.auth.signals.task_send_email.delay")
def test_email(self):
expect(self.mock_call).to(have_been_called_once)
def test_sms(self):
mock_sms = self.patch("apps.auth.signals.task_send_sms.delay")
expect(mock_sms).to(have_been_called_once)
Wrong
from unittest.mock import patch
class SignUpUpdatedTests(TestCase):
def setUp(self):
self.patcher = patch("apps.auth.signals.task_send_email.delay")
self.mock_email = self.patcher.start()
def tearDown(self):
self.patcher.stop()
def test_email(self):
...
expect(self.mock_email).to(have_been_called_once)
@patch("apps.auth.signals.task_send_sms.delay")
def test_sms(self, mock_sms):
...
expect(mock_sms).to(have_been_called_once)
IW02: Use of patch for time freeze
Lint check to prevent the use of patch
to freeze time.
Recommendation: Use freeze_time
from PatchingTestCase
/ PatchingTransactionTestCase
or use freeze_time
decorator or context manager from freezegun
package.
Correct
from django.utils import timezone
from instawork.tests import PatchingTestCase
class UserFeatureViewTests(PatchingTestCase):
def setUp(self):
self.now = timezone.now()
def test_feature_view(self):
ufv = None
# Option 1
with freeze_time(self.now):
ufv = UserFeatureView.objects.get_or_create(
user=self.shift.worker, feature=UserFeatureView.FEATURE_1
)
# Option 2
self.freeze_time(self.now)
ufv = UserFeatureView.objects.get_or_create(
user=self.shift.worker, feature=UserFeatureView.FEATURE_1
)
...
expect(ufv.date_created).to(equal(self.now))
Wrong
from django.utils import timezone
from instawork.tests import PatchingTestCase
class UserFeatureViewTests(PatchingTestCase):
def setUp(self):
self.now = timezone.now()
self.mock_call = self.patch("django.utils.timezone.now", return_value=self.now)
def test_feature_view(self):
ufv = UserFeatureView.objects.get_or_create(
user=self.shift.worker, feature=UserFeatureView.FEATURE_1
)
...
expect(ufv.date_created).to(equal(self.now))
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
flake8_iw-0.0.7.tar.gz
(2.4 kB
view details)
Built Distribution
File details
Details for the file flake8_iw-0.0.7.tar.gz
.
File metadata
- Download URL: flake8_iw-0.0.7.tar.gz
- Upload date:
- Size: 2.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.15
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | bf756d51c8064cf291e1867fa86c326895c4cbc7441213b0e62ee9ef19fee687 |
|
MD5 | e67c5d2297446c99a42553a8f59eecde |
|
BLAKE2b-256 | 0f58df52904f8240ec003e21894c135a3eac276ddee081795cfb0056a9dddaea |
File details
Details for the file flake8_iw-0.0.7-py2.py3-none-any.whl
.
File metadata
- Download URL: flake8_iw-0.0.7-py2.py3-none-any.whl
- Upload date:
- Size: 2.2 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.15
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6ff61290b433da864f64fe9782483bf3ea0ddab480227b5d37902f0a4bcb8306 |
|
MD5 | deaa83fdbab87fb7d984bcf74d1a3395 |
|
BLAKE2b-256 | da08ecd00d8457311e7226871b1a4ccf4a485385fd947bb9a526a8204cb89aaa |