首页 > 解决方案 > 针对源代码或包运行测试

问题描述

我编写了一些 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 以便我可以针对开发代码运行测试,但用户针对已安装的包运行?

谢谢!

标签: pytestsetuptoolspython-unittestpython-packagingtox

解决方案


当您说“我在开发时针对源代码运行的测试”时存在误解。

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

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

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


推荐阅读