【发布时间】:2021-04-27 00:00:39
【问题描述】:
我正在编写一个 Python 模块,它指定了一组入口点,因此其他主机模块可以发现一个新功能。我正在遵循official documentation 指定的 setuptools 方法。
例如,下面的 sn-p 显示了通过名为 hello-world 的 sample.contribution 的贡献,它指向 timmins.hello_world 属性。
[options.entry_points]
sample.contribution =
hello-world = timmins:hello_world
假设主机插件定义了一个类似下面的方法来加载 sample.contributions 扩展。
def load_contributions():
...
我想做的是编写一个测试,以确保主机模块正确加载 entry_point。目前,测试这种入口点加载的唯一方法是通过构建一个轮子并 pip-install 它。安装好之后就可以成功加载entry_point了。
所以,我的问题是......有没有办法在 setup.py(或 setup.cfg)中添加指定的 entry_points,以便在测试执行期间加载它们?即对定义 entry_point 的模块进行测试,调用load_contributions 方法时返回贡献
【问题讨论】:
-
不确定是否值得测试。如果是我,我会假设它已经在 setuptools 中进行了测试。 -- 这让我觉得也许值得看看 setuptools 自己的代码库和测试套件,看看他们如何测试这些东西并从中汲取灵感。
-
测试插件是否正确实现了主机定义的扩展点不是很有趣吗?我认为在进入生产环境而不加载插件之前对其进行测试是值得的。
-
啊,我想我误解了这个问题。是的,您可以使用 tox,因为它总是在运行命令(测试套件)之前正确安装项目。因此,如果安装正确,那么入口点肯定也应该可用。
-
@josandres,我也有同样的问题。您找到解决方案了吗?
-
@AshokRayal 使用 tox 进行攻击。您可以定义自定义 testenv,其中可以安装主机库和扩展插件。至少对我有用:D
标签: python testing setuptools entry-point