跳转到主要内容

为测试flake8插件而设计的pytest插件。

项目描述

https://img.shields.io/github/workflow/status/adamchainz/pytest-flake8dir/CI/main?style=for-the-badge https://img.shields.io/pypi/v/pytest-flake8dir.svg?style=for-the-badge https://img.shields.io/badge/code%20style-black-000000.svg?style=for-the-badge pre-commit

未维护: 随着pytest中临时目录插件的更改,我创建了一个后继库,pytest-flake8-path。我建议您使用它。


为测试flake8插件而设计的pytest插件。

快速示例

def test_simple_run(flake8dir):
    flake8dir.make_example_py(
        """
        x  = 1
    """
    )
    result = flake8dir.run_flake8()
    assert result.out_lines == [
        "./example.py:1:2: E221 multiple spaces before operator"
    ]

安装

使用 pip

python -m pip install pytest-flake8dir

支持Python 3.6到3.10。


在Django项目中工作? 查看我关于如何加速Django测试的书 Speed Up Your Django Tests,它涵盖了大量的最佳实践,使您可以编写更快的、更准确的测试。


API

flake8dir 插件

一个pytest插件,它包装了pytest的内置 tmpdir 插件(文档),用于创建临时目录、添加文件和运行flake8。

如果您正在使用此插件测试flake8插件,请确保flake8在测试期间能检测到您的插件。通常这通过 setup.py 入口点来完成,这使得 tox 成为确保此操作就绪的最简单方式,因为它将在运行测试之前在您的项目上运行 setup.py install

flake8dir.make_py_files(**kwargs: str) -> None

为每个传入的关键字参数创建一个Python文件,文件名与关键字参数对应 + ‘.py’,内容根据参数的字符串值。该值将使用 textwrap.dedent() 进行处理,因此在测试文件中混合缩进不会成为问题。

例如,这将在临时目录中创建两个Python文件,分别命名为 example1.pyexample2.py,每个文件包含一行赋值。

def test_sample(flake8dir):
    flake8dir.make_py_files(
        example1="""
            x = 1
        """,
        example2="""
            y = 1
        """,
    )

flake8dir.make_example_py(content: str) -> None

这是 make_py_files(example=content) 的快捷方式,当你反复使用单个文件时。这只会创建 example.py,通常这已经足够用于测试规则。

例如

def test_sample(flake8dir):
    flake8dir.make_example_py(
        """
        x = 1
    """
    )

flake8dir.make_setup_cfg(contents: str) -> str

在测试目录中创建名为 setup.cfg 的文件,其内容与传入的字符串相同。这同样经过 textwrap.dedent() 处理,因此缩进不会引起担忧。你可能希望将 [flake8] 节标题设置为配置flake8。

例如,这将使flake8忽略规则E101

def test_sample(flake8dir):
    flake8dir.make_setup_cfg(
        """
        [flake8]
        ignore = E101
    """
    )

flake8dir.make_file(filename: str, content: str) -> None

创建具有给定文件名的任意文件 - 此函数是 make_py_filesmake_setup_cfg 的内部实现。 filename 可以包含目录,如 mydir/foo.py,并且将创建这些目录。 content 将接受与上述所述相同的 textwrap.dedent() 处理。

例如

def test_sample(flake8dir):
    flake8dir.make_file(
        "myfile/foo.py",
        """
        x = 1
    """,
    )

flake8dir.run_flake8(extra_args: list[str] | None = None) -> Flake8Result

运行flake8并返回一个表示结果的 Flake8Result

extra_args 可以是传递给flake8的额外标志列表,例如,传递 ["--ignore", "E101"] 将会实现与上述 setup.cfg 示例相同的效果。注意,一些参数已经传递以确保flake8以隔离方式运行 - 请参阅源代码。

Flake8Result

表示flake8运行的解析输出。

Flake8Result.out: str

flake8生成的完整输出字符串(stdout)。

Flake8Result.err: str

flake8生成的完整错误输出字符串(stderr)。

Flake8Result.exit_code: int

flake8运行退出的退出代码。

Flake8Result.out_lines: list[str]

输出行的列表,没有尾随换行符。这是进行断言最有用的工具。

例如,给定一个结果,你可以检查是否输出了特定行

result = flake8dir.run_flake8()
expected = "./example.py:1:2: E221 multiple spaces before operator"
assert expected in result.out_lines

Flake8Result.err_lines: list[str]

out_lines 类似,但用于错误输出。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源代码分发

pytest-flake8dir-2.6.1.tar.gz (7.2 kB 查看哈希)

上传时间

构建分发

pytest_flake8dir-2.6.1-py3-none-any.whl (5.8 kB 查看哈希值)

上传时间 Python 3

由...