setuptools test 使用 unittest discover 来运行测试

在使用 setuptools 来制作python包的安装程序时,支持使用以下命令来运行测试用例

python setup.py test

但默认情况下是使用 setuptools.command.test:ScanningLoader 来加载测试用例
如果要支持使用 unittest discover 来运行测试用例,需要做一些定制
参考这里的讨论
http://stackoverflow.com/questions/17001010/how-to-run-unittest-discover-from-python-setup-py-test
https://pytest.org/latest/goodpractises.html

from setuptools.command.test import test
def discover_and_run_tests():
    import os
        import sys
        import unittest
 
    # get setup.py directory
    setup_file = sys.modules['__main__'].__file__
    setup_dir = os.path.abspath(os.path.dirname(setup_file))
 
    # use the default shared TestLoader instance
    test_loader = unittest.defaultTestLoader
 
    # use the basic test runner that outputs to sys.stderr
    test_runner = unittest.TextTestRunner()
 
    # automatically discover all tests
    # NOTE: only works for python 2.7 and later
    test_suite = test_loader.discover(setup_dir)
 
    # run the test suite
    test_runner.run(test_suite)
 
class DiscoverTest(test):
    def finalize_options(self):
        test.finalize_options(self)
        self.test_args = []
        self.test_suite = True
 
    def run_tests(self):
        discover_and_run_tests()
 
setup(
....
    cmdclass={'test': DiscoverTest},
....
)
 
 
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Startup 单元测试的核心价值在于两点: 更加精确地定义某段代码的作用,从而使代码的耦合性更低 避免程序员写出...
    wuwenxiang阅读 10,140评论 1 27
  • # Python 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列...
    aimaile阅读 26,546评论 6 427
  • (转自测试前辈) 单元测试的重要性就不多说了,可恶的是python中有太多的单元测试框架和工具,什么unittes...
    _老吉阅读 2,547评论 0 1
  • WebDriver基础 欢迎阅读WebDriver基础讲义。本篇讲义将会重点介绍Selenium WebDrive...
    厲铆兄阅读 22,240评论 3 43
  • 今天是正式开启在广东这片土地上的征程,不过是以旅行开始,再去学习。 你可以说我这是爱生活、爱自己的体现;你也可以说...
    Elian一莲阅读 553评论 1 3