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.10.tar.gz
(4.3 kB
view details)
Built Distribution
File details
Details for the file flake8_iw-0.0.10.tar.gz
.
File metadata
- Download URL: flake8_iw-0.0.10.tar.gz
- Upload date:
- Size: 4.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.15
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ef9682b8c720d20064cf07dfce139cf20aebb775d03899512fb9b27e331cb52c |
|
MD5 | 68a05547edbbee574ab60a0c7d4ecac9 |
|
BLAKE2b-256 | 80253680c92fc01c0ecda8f21091c78d57fea945f0b75426abcae2ae406eaae3 |
File details
Details for the file flake8_iw-0.0.10-py2.py3-none-any.whl
.
File metadata
- Download URL: flake8_iw-0.0.10-py2.py3-none-any.whl
- Upload date:
- Size: 5.0 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 | 86ca06a0e80abae088003227aa8f6a1de96f7ddad50f90440f6474d2a7b17dff |
|
MD5 | 701607d1937b83aa66c6ac60a2299cd0 |
|
BLAKE2b-256 | 2534210fa3e0d26600bd76b9ee3511c03bd3358a6c97c99b6528276de080193f |