跳转到主要内容

pytest插件,用于您的Cookiecutter模板。🍪

项目描述

pytest-cookies

pytest 是一个成熟的Python测试框架,由一个充满活力且不断壮大的志愿者社区开发。它使用普通的assert语句和常规的Python比较。pytest测试框架的核心是一个强大的基于挂钩的插件系统。

pytest-cookies 是一个pytest插件,它包含一个名为 cookies 的固定装置,它是用于生成项目的cookiecutter API的包装器。它可以帮助您验证模板是否按预期工作,并在运行测试后进行清理。🍪

安装

pytest-cookies 可从 PyPI 通过 pip 下载

pip install pytest-cookies

这将自动安装 pytestcookiecutter

用法

生成新项目

cookies.bake() 方法根据在 cookiecutter.json 中指定的默认值,从您的模板生成新项目。

def test_bake_project(cookies):
    result = cookies.bake(extra_context={"repo_name": "helloworld"})

    assert result.exit_code == 0
    assert result.exception is None

    assert result.project_path.name == "helloworld"
    assert result.project_path.is_dir()

    # The `project` attribute is deprecated
    assert result.project.basename == "helloworld"
    assert result.project.isdir()

请注意,返回的Result类的project属性已被弃用,将在未来的版本中删除,请使用project_path代替。

cookies.bake()方法也接受将被传递给cookiecutter的extra_context关键字参数。给定的字典将覆盖模板上下文的默认值,有效地允许您测试任意用户输入数据。

有关注入额外上下文的更多信息,请参阅cookiecutter文档

指定模板目录

默认情况下,cookies.bake()在当前目录中查找cookiecutter模板。这可以通过传递给pytest的--template参数来覆盖。

pytest --template TEMPLATE

您可以通过传递可选的template参数来自定义测试中的cookiecutter模板目录。

@pytest.fixture
def custom_template(tmpdir):
    template = tmpdir.ensure("cookiecutter-template", dir=True)
    template.join("cookiecutter.json").write('{"repo_name": "example-project"}')

    repo_dir = template.ensure("{{cookiecutter.repo_name}}", dir=True)
    repo_dir.join("README.rst").write("{{cookiecutter.repo_name}}")

    return template


def test_bake_custom_project(cookies, custom_template):
    """Test for 'cookiecutter-template'."""
    result = cookies.bake(template=str(custom_template))

    assert result.exit_code == 0
    assert result.exception is None

    assert result.project_path.name == "example-project"
    assert result.project_path.is_dir()

保留输出目录以进行调试

默认情况下,cookies会删除烘焙项目。

但是,如果您希望保留它们,可以传递keep-baked-projects标志(它不会造成混乱,因为pytest只保留三个最新的临时目录)。

pytest --keep-baked-projects

社区

欢迎贡献!如果您遇到任何问题,请提交问题,并提供详细的描述。可以使用tox运行测试。在提交拉取请求之前,请确保所有测试都是绿色的。

您还可以通过志愿成为维护者来支持这个项目的开发,这意味着您将能够处理问题、合并拉取请求并发布新版本。如果您感兴趣,请提交一个拉取请求以将自己添加到维护者列表中,我们将帮助您开始!🍪

请注意,pytest-cookies贡献者行为准则一同发布。通过参与此项目,您同意遵守其条款。

许可协议

MIT许可下分发,pytest-cookies是免费和开源软件。

项目详情


下载文件

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

源分布

pytest-cookies-0.7.0.tar.gz (8.8 kB 查看哈希)

上传时间

构建分布

pytest_cookies-0.7.0-py3-none-any.whl (6.4 kB 查看哈希)

上传时间 Python 3

支持者