如何使用 nose2 测试 Python 2 代码

How to test Python 2 code using nose2

我以前问过这个问题 (Force nose2 to use Python 2.7 instead of Python 3.5) 但没有得到答案,我想我可以再试一次。我正在尝试 运行 使用命令

进行测试
nose2

但我收到以

结尾的错误
SyntaxError: Missing parentheses in call to 'print'

似乎nose2假设代码在Python3中,而在这种情况下它在Python2中。有什么办法可以使nose2 在 Python 2 代码上工作? (例如通过更改其配置)?

nose2 采用在 shebang 行中配置的任何 python。

测试 python2 项目使用(可执行文件和路径在您的机器上可能不同):

python2.7 /usr/local/bin/nose2

已通过此示例验证:

test.py:

def test_the_program():
    print "foo"

和python3:

$ python3 /usr/local/bin/nose2
======================================================================
ERROR: test (nose2.loader.ModuleImportFailure)
----------------------------------------------------------------------
ImportError: Failed to import test module: test
    (...)
    print "hans"
               ^
SyntaxError: Missing parentheses in call to 'print'


----------------------------------------------------------------------
Ran 1 test in 0.000s

FAILED (errors=1)

与python2.7:

$ python2.7 /usr/local/bin/nose2
foo
.
----------------------------------------------------------------------
Ran 1 test in 0.000s

OK