pytest - 针对源代码或包运行测试

标签 pytest setuptools python-unittest python-packaging tox

我已经编写了一些Python,并将其作为自定义包分发。我在开发时针对源代码运行了一些测试,但我也希望安装该包的用户能够针对分布式包运行相同的测试。

我的包遵循以下结构:

my_package
├── MyPackage
│   ├── __init__.py
│   └── my_module.py
├── setup.py
└── tests
    └── test_my_package.py

my_package.py


def my_function():
    print("here!")
    return True

并且test_my_package.py是:

import unittest

import sys
sys.path.insert(0, "../")
from MyPackage.my_module import my_function

class TestMyModule(unittest.TestCase):

    def test_somehting(self):
        self.assertTrue(my_function())

当我操作sys.path时,我总是针对开发代码运行测试。有没有办法使用 stuptools,以便我可以针对开发代码运行测试,但用户针对已安装的包运行测试?

谢谢!

最佳答案

当您说“我在开发时针对源代码运行的测试”时,这是一种误解。

您始终应该针对打包代码运行测试,因为您希望确保用户将运行的打包代码能够正常工作。

您可以使用tox来运行测试,它会自动从源代码创建一个包,甚至运行不同Python版本的测试,例如当前支持的Python 3.6、3.7和3.8。

虽然这是一件非常罕见的事情,但您的用户也可以运行测试。

关于pytest - 针对源代码或包运行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66158228/

相关文章:

Jenkins 从远程测试电脑发布 junit xml

python - 如何使用本地模块防止pytest

python - 如何解决 PyTest 中的陈旧元素异常

python-3.x - 使用 setuptools 在 python 包中链接 f2py 生成的 *.so 文件

python - 有没有更快的方法为 Django View 编写类似的测试用例?

python - 仅当另一个单元测试通过时才运行 python 单元测试

python - 尽管超时,Pytest 仍然挂起

python 在您的分发包中包含一个文件夹

python - 无法为 pip 创建 Python 包

python - 如何并行执行 python 子测试?