运行Python单元测试而不构建inp扩展

2024-04-19 23:43:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个python3.6包,其中包含一些Cython扩展。假设其内容如下:

# example/example.pyx

def add(int a, int b):
    return a + b

我可以用这个脚本使用setuptools来构建它

^{pr2}$

现在我可以添加一个单元测试:

# example/tests/test_example.py

import unittest
from example.example import add

class TestExample(unittest.TestCase):
    def test_add(self):
        result = add(4, 5)
        self.assertEqual(result, 9)

但是,如果我运行python -m unittest discover,测试将失败,并返回ImportError,因为它找不到已编译的Cython模块。即使我已经使用python setup.py build_ext构建了模块,也会发生这种情况。在

我发现让测试工作的唯一方法是使用python setup.py build_ext -i在适当的地方构建Cython模块,但这似乎是不必要的。如果我没有就地构建,有没有方法告诉unittest库如何找到已编译的Cython模块?在


Tags: 模块pytestimportbuildselfaddexample