使用isort检查导入顺序的py.test插件
pytest-isort的Python项目详细描述
用法
使用pip:
安装pip install pytest-isort
调用py.test:
时激活isort检查py.test --isort
这将对每个.py文件执行isort检查(如果它没有被忽略)。
示例
如果有一些文件的导入排序不正确:
# content of file1.py import os import sys import random # content of file2.py import json import sys import os
如果运行py.test并激活isort插件,您将看到如下内容:
$ py.test --isort ========================= test session starts ========================== platform darwin -- Python 2.7.9 -- py-1.4.26 -- pytest-2.6.4 plugins: isort 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 =======================
如果无法更改file2.py的导入顺序,则可以选择 从isort检查中排除file2.py。
只需将isort_ignore设置添加到py.test配置文件:
[pytest] isort_ignore = file2.py
然后重新运行测试:
$ py.test --isort ========================= test session starts ========================== platform darwin -- Python 2.7.9 -- py-1.4.26 -- pytest-2.6.4 plugins: isort 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 =======================
如您所见,file2.py被忽略并且未被选中。现在修复 在file1.py中导入排序并重新运行测试:
$ py.test --isort ========================= test session starts ========================== platform darwin -- Python 2.7.9 -- py-1.4.26 -- pytest-2.6.4 plugins: isort collected 1 items file1.py . ======================= 1 passed in 0.01 seconds ======================
一切又恢复正常了。祝贺你!
如果您一次又一次地运行测试套件,py.test将只检查changed 要加速的文件。通过将-rs添加到py.test选项中可以看到这一点:
$ py.test --isort -rs ========================= test session starts ========================== platform darwin -- Python 2.7.9 -- py-1.4.26 -- pytest-2.6.4 plugins: isort 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 ======================
配置
可以使用^{tt7}从isort检查中排除文件$ 在py.test配置文件中设置(例如pytest.ini):
# content of setup.cfg [pytest] isort_ignore = docs/conf.py *migrations/*.py
这将忽略docs文件夹中的conf.pypython文件,并 同时忽略migrations文件夹中的任何python文件。
注释
可以使用isort重写python文件并重新排序导入,但是 这不是这个插件的一部分。