使用isort检查导入顺序的py.test插件

pytest-isort的Python项目详细描述


https://badge.fury.io/py/pytest-isort.svghttps://travis-ci.org/moccu/pytest-isort.svg?branch=master

用法

使用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文件并重新排序导入,但是 这不是这个插件的一部分。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java IntelliJ找不到依赖项选项卡   java向字符串数组string[]添加元素并在Junit中测试结果   如何在eclipse中获取活动java项目的名称   如何使用java在mysql中插入时间   java ArrayList更新了插入一行,但Jtable仍然没有刷新   如何在JavaSwing中命名坐标(点)   java Matcher/模式不打印   java错误地设置了arraylist   使用UsernamePasswordCredential提供程序的java列表Azure AD   java在HTTP请求中设置UTC时间   未加载事件:jquery完整日历Java集成   java Maven插件依赖项无法从内部repo解析依赖项   Maven更新重置Java版本   java如何向中添加图片。带有Apache POI XWPF的docx,但不指定其大小   Java最大函数递归