如何使用nose2测试Python 2代码

时间:2017-01-11 10:59:37

标签: python unit-testing nose2

我之前(Force nose2 to use Python 2.7 instead of Python 3.5)曾问过这个问题,但没有得到答案,我想我可能会再试一次。我试图使用命令

运行测试
nose2

但我收到的错误以

结尾
SyntaxError: Missing parentheses in call to 'print'

似乎nose2假设代码在Python 3中,而在这种情况下它在Python 2中。有没有办法使nose2能够处理Python 2代码? (例如,通过更改其配置)?

1 个答案:

答案 0 :(得分:3)

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