【发布时间】:2017-04-25 11:10:05
【问题描述】:
我编写了一个 C 扩展,旨在提高 Python 库的性能。该扩展是使用 pip 额外安装的:
# Install the library by itself:
pip install pyota
# Install the Python library w/ C extension:
pip install pyota[ccurl]
Python 库更喜欢 C 扩展(如果存在),但它会退回到纯 Python 实现:
# iota/crypto/__init__.py
try:
from ccurl import *
except ImportError:
from .pycurl import *
测试 C 扩展的一种简单方法是安装扩展,然后为 Python 库运行单元测试。覆盖范围很广,因此如果单元测试在安装 C 扩展的情况下通过,我可以确信 C 扩展的行为与纯 Python 实现相同。
然而,事实证明这很难实现自动化。
我正试图让 Travis CI 做这样的事情:
-
pip install -e .(即将pyota[ccurl]安装到venv)。 - 将
pyotasource dist 安装到 cwd(source dist 包括单元测试)。 -
nosetests pyota/tests(从本地源 dist 运行单元测试)。
但是,我在弄清楚如何完成第 2 步时遇到了麻烦。
如何指示 Travis CI 通过 pip 下载源代码分发,以便它可以运行单元测试?
【问题讨论】:
标签: unit-testing pip travis-ci