Skip to main content

pytest plugin to perform isort checks (import ordering)

Project description

Usage

install using pip:

pip install pytest-isort

Activate isort checks when calling py.test:

py.test --isort

This will execute an isort check against every .py file (if its not ignored).

Example

Given you have some files with incorrect sorted imports:

# content of file1.py

import os
import sys
import random

# content of file2.py

import json
import sys
import os

If you run py.test and activate the isort plugin you’ll se something like this:

$ py.test --isort
========================= test session starts ==========================
platform darwin -- Python 2.7.9 -- py-1.4.26 -- pytest-2.6.4
plugins: isort, cache
collected 2 items

file1.py F
file2.py F

=============================== FAILURES ===============================
_____________________________ isort-check ______________________________
ERROR: file1.py Imports are incorrectly sorted.

 import os
+import random
 import sys
-import random
_____________________________ isort-check ______________________________
ERROR: file2.py Imports are incorrectly sorted.

 import json
+import os
 import sys
-import os
======================= 2 failed in 0.02 seconds =======================

If you can’t change the import ordering for file2.py, you have the option to exclude file2.py from isort checks.

Simply add the isort_ignore setting to your py.test configuration file:

[pytest]
isort_ignore =
    file2.py

Then re-run the tests:

$ py.test --isort
========================= test session starts ==========================
platform darwin -- Python 2.7.9 -- py-1.4.26 -- pytest-2.6.4
plugins: isort, cache
collected 1 items

file1.py F

=============================== FAILURES ===============================
_____________________________ isort-check ______________________________
ERROR: file1.py Imports are incorrectly sorted.

 import os
+import random
 import sys
-import random
======================= 1 failed in 0.02 seconds =======================

As you can see, file2.py is ignored and not checked. Now fix the import ordering in file1.py and re-run the tests:

$ py.test --isort
========================= test session starts ==========================
platform darwin -- Python 2.7.9 -- py-1.4.26 -- pytest-2.6.4
plugins: isort, cache
collected 1 items

file1.py .

======================= 1 passed in 0.01 seconds ======================

Everything is properly again. Congratulations!

If you run your testsuite again and again, py.test will only check changed files to speed up. You see this by adding -rs to your py.test options:

$ py.test --isort -rs
========================= test session starts ==========================
platform darwin -- Python 2.7.9 -- py-1.4.26 -- pytest-2.6.4
plugins: isort, cache
collected 1 items

file1.py s
======================= short test summary info ========================
SKIP [1] pytest_isort.py:145: file(s) previously passed isort checks

====================== 1 skipped in 0.01 seconds ======================

Configuration

You can exclude files from isort checks by using the isort_ignore setting in your py.test configuration file (e.g. pytest.ini):

# content of setup.cfg
[pytest]
isort_ignore =
    docs/conf.py
    *migrations/*.py

This will ignore the conf.py python file inside the docs folder and also ignore any python file in migrations folders.

Notes

You can use isort to rewrite your python files and re-order the imports but this is not part of this plugin.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pytest-isort-0.1.0.tar.gz (5.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pytest_isort-0.1.0-py2-none-any.whl (6.6 kB view details)

Uploaded Python 2

File details

Details for the file pytest-isort-0.1.0.tar.gz.

File metadata

  • Download URL: pytest-isort-0.1.0.tar.gz
  • Upload date:
  • Size: 5.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for pytest-isort-0.1.0.tar.gz
Algorithm Hash digest
SHA256 e92798127e21d22513c62070989f0fb3b712650e48a4db13e5b8e8034d367cfe
MD5 e22d98ef1ef6156c292ba48b0ffbf2c3
BLAKE2b-256 ad2ef8892cb0917452fa8aea2fbf9dc23b0142e6187cafd409aeb47c02712059

See more details on using hashes here.

File details

Details for the file pytest_isort-0.1.0-py2-none-any.whl.

File metadata

File hashes

Hashes for pytest_isort-0.1.0-py2-none-any.whl
Algorithm Hash digest
SHA256 fc315e3ceac576f2b7000c4716a55063c45ed60c169ba2ede5a6b4aef97ce13e
MD5 2199a37c77b27eb37a08d70aabd98646
BLAKE2b-256 f3c7756f67c5c7aef3345e5222c56e2275093fec1b47e69df47de77898e45642

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page