如何在`python setup.py test`中运行py.test和linters

我有一个setup.py文件的项目。 我使用pytest作为测试框架,我也在我的代码上运行各种linters( pep8pylintpydocstylepyflakes等)。 我使用tox在多个Python版本中运行这些代码,以及使用Sphinx构建文档。

我想用python setup.py test任务运行我的测试套件以及源代码中的linters。 如果我实现了这个目标,那么我会使用python setup.py test作为在tox.ini文件中运行测试的命令。

所以我的问题是:

  • 使用python setup.py test来执行这些操作是合理的还是很好的做法? 或者我应该使用其他工具,例如直接在tox写入这些命令?
  • 我如何获得setup.pytest任务中执行这些操作?
  • 我知道py.test具有setup.py test集成说明(这里是:http: py.test ),但我正在寻找更多的“任意CLI命令”路由,因为我想运行几个工具。


    1.我个人更喜欢TOX这些任务,因为

  • 它也会检查你的代理安装是否正确(在所有py版本上)
  • 它可以用多个python版本(virtualenv)测试你的代码
  • 并且随着你的设置(因为你已经在使用tox了),我真的不明白将python setup.py test写入tox.ini的好处,而不是真正的测试命令,因为它只会增加一些更复杂的内容(新用户/贡献者必须搜索两个文件( tox.inisetup.py )以获得运行的测试/工具,而不是一个( tox.ini )。


    2。

    要使用此命令,您的项目测试必须通过函数,TestCase类或方法或包含TestCase类的模块或程序包包装在unittest测试套件中。

    setuptools的#测试


    如何让setup.py testtox

    import sys
    import os
    
    if sys.argv[-1] == 'test':
        try:
            import tox
        except ImportError:
            raise ImportError('You should install `tox` before run `test`')
        sys.exit(os.system('tox'))
    

    看起来不太好,但你有一点。 继续使用tox.ini来配置你的测试环境和跑步者(如flake8coverage等)。因为tox擅长这样的东西。


    您可以将更多自定义命令添加到您的setup.py文件中,如下所示:

    class FooCommand(distutils.cmd.Command):
        ...
    
    setup(
        cmdclass={
            'foo': FooCommand,
        }
    )
    

    但是,请注意,已经有一组您可以使用的命令,以及一些可以包含的选手。

    setup(
        setup_requires=['pytest-runner'] # gives you a new pytest command
    )
    

    通过运行python setup.py --help-commands

    Extra commands:
      ...
      pytest            run unit tests after in-place build
    
    链接地址: http://www.djcxy.com/p/31931.html

    上一篇: How to run py.test and linters in `python setup.py test`

    下一篇: How to Fix unplug usb cable error in android with usb web cam?