创建可重用的py.text灯具

时间:2014-08-29 16:10:49

标签: python pytest

我制作了一个基本软件包,以便在Pyramid应用程序中使用SQLAlchemy:pyramid_sqlalchemy。当您使用此包为应用程序编写测试时,您将需要一些夹具来提供有效的数据库环境。这些灯具是完全通用的,不需要为应用定制。此时,这些灯具列在testing chapter of the documentation中,要求人们复制&将它们粘贴到代码中。毋庸置疑,这并不理想。

是否有一种简单的方法让pyramid_sqlalchemy以其他包可以直接使用它们的方式公开这些灯具?我尝试了一种天真的方法,创建了一个包含所有灯具的pyramid_sqlalchemy.fixtures模块,并在应用测试的from pyramid_sqlalchemy.fixtures import *中执行了conftest.py,但这并没有导致灯具被拾取。

1 个答案:

答案 0 :(得分:2)

请查看有关在http://pytest.org/latest/plugins.html#making-your-plugin-installable-by-others安装外部插件的文档。

基本上你创建一个带有setuptools入口点的python包:

# sample ./setup.py file
from setuptools import setup

setup(
    name="myproject",
    packages = ['myproject']

    # the following makes a plugin available to pytest
    entry_points = {
        'pytest11': [
            'name_of_plugin = myproject.pluginmodule',
            ]
    },
)

myproject.pluginmodule是包含您的灯具的模块。然后使用pip安装该软件包将使pytest在启动时加载它。有关示例,请参阅pytest-mock或任何其他pytest插件。

希望有所帮助,