使用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中不同http客户端超时时间单位的重要性   java数据[i++]=data[i++]*2结果令我惊讶   java Quartz在使用spring的hibernate中执行事务时发生异常   java如何将我的对象传递给另一个类   java嵌套布局奇怪的问题   当使用javax时,有一种方法可以通过策略定义自定义订单。坚持不懈OrderBy注释?   xml Java DOM getElementByID   java使用intent将视图列表传递给另一个片段   带构造函数的Java枚举。通过构造函数参数获取值的最佳方法   java为什么不在单线程中执行此通量?   如何将JavaScript字符串传递给Nashorn引擎而不是Java字符串?   java二进制XML文件行#17:膨胀类片段时出错   java如何使用Seekbar值作为int变量?   java我想从数据存储中进行选择,但它不起作用   java如何处理幻灯片中的多分辨率图像?   java这意味着什么?类型不匹配:无法从列表<对象和可比<?>&可序列化>以列出<对象>“   java我如何让这个猜谜游戏发挥作用?   java将ZipInputStream传递给DocumentBuilder。parse()   java后添加maven依赖项,org。阿帕奇。卡塔琳娜。过滤器。当前错误消息   java有没有一种方法可以使用安卓通过按下便利键触发方法?