如何在setup.py中使用PyTest的复杂参数

时间:2014-07-01 00:29:28

标签: python setuptools pytest

我的setup.py TestCommand看起来像这样:

class PyTest(TestCommand):
    def finalize_options(self):
        TestCommand.finalize_options(self)
        self.test_args = ['-v','-m "not luna"']
        self.test_suite = True

    def run_tests(self):
        #import here, cause outside the eggs aren't loaded
        import pytest
        errno = pytest.main(self.test_args)
        sys.exit(errno)

我的问题在于test.args行。

我在setup.py中使用py.test的第一个概念验证设置有以下参数:

['-v', '-k DivHour']

只执行名称中包含字符串DivHour的测试,并且通过python setup.py test调用时,该工作正常。

现在我想运行所有可用的测试,除了标有@pytest.mark.luna标记的测试之外 标记本身工作正常,当我使用`py.test -v -m“而不是luna”运行测试时成功执行确认。

但是,上面的语法没有使用setup.py机制获取,py.test在这种情况下也会尝试执行标记的测试。

我还尝试使用"转义\,如此:

['-v', '-m \"not luna\"']

但也无济于事。 谁知道我怎么能做到这一点?

1 个答案:

答案 0 :(得分:2)

您需要单独传递每个参数:

self.test_args = ['-v', '-m', 'not luna']