跳转到主要内容

Pytest插件,简化对系统运行shell命令

项目描述

CI Docs Codecov Python Versions Python Wheel Code Style: black PyPI - License

什么是 Pytest Shell 工具

“当有疑问时,调用 shell”

——托马斯·S·哈奇

此 pytest 插件是从 pytest-salt-factories 中提取出来的。它提供了一个基本的 fixture shell,该 fixture 主要使用 subprocess.Popen 在 shell 中运行命令,同时对运行系统提供友好的可断言返回类。

安装

安装 pytest-shell-utilities 简单到只需

python -m pip install pytest-shell-utilities

这就足够了。

使用方法

安装完成后,现在您可以使用 shell fixture 来运行一些命令并对结果进行断言。

def test_assert_good_exitcode(shell):

    ret = shell.run("exit", "0")
    assert ret.returncode == 0


def test_assert_bad_exitcode(shell):

    ret = shell.run("exit", "1")
    assert ret.returncode == 1

如果命令输出可解析的 JSON,shell fixture 可以尝试将该输出加载为 JSON,这允许对加载的 JSON 对象进行断言。

def test_against_json_output(shell):
    d = {"a": "a", "b": "b"}
    ret = shell.run("echo", json.dumps(d))
    assert ret.data == d

此外,返回对象的 .stdout.stderr 可以使用 pytest.pytester.LineMatcher 进行行匹配。

MARY_HAD_A_LITTLE_LAMB = """\
Mary had a little lamb,
Its fleece was white as snow;
And everywhere that Mary went
The lamb was sure to go.
"""


def test_matcher_attribute(shell):
    ret = shell.run("echo", MARY_HAD_A_LITTLE_LAMB)
    ret.stdout.matcher.fnmatch_lines_random(
        [
            "*had a little*",
            "Its fleece was white*",
            "*Mary went",
            "The lamb was sure to go.",
        ]
    )

文档

完整的文档可以在 这里 查看。

项目详情


下载文件

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

源分布

pytest_shell_utilities-1.9.3.tar.gz (81.0 kB 查看哈希值)

上传时间 源代码

构建分布

pytest_shell_utilities-1.9.3-py3-none-any.whl (28.7 kB 查看哈希值)

上传时间 Python 3

支持者: