为测试flake8插件而设计的pytest插件。
项目描述
未维护: 随着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.py 和 example2.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_files 和 make_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 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a368d1f9366b9f8084da24f324a65d312ca129d363f1a0cbdc7409376bb9e66f |
|
MD5 | 049b87ed5cc4683efc9d577bc80ba37b |
|
BLAKE2b-256 | 173cf056fd10c8608474d950668c7c8628c0f4fc3da502f6ae6bef6d3818eddb |
pytest_flake8dir-2.6.1-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f37df8b9e11cdb5c6f2d8c907ce145c686e31d80b2a1f6a887534bda3288ac66 |
|
MD5 | e32741c0b0e9814a490a5ba02b99ad9d |
|
BLAKE2b-256 | 547365ed799674c72939aa1456e1ee18c0b85cfb6e73cacd7670785f80b89a4d |