2016-01-23 18 views
2

我在使用pytest-django测试Django应用时遇到了Travis的一个奇怪问题。我所有的测试都通过本地测试,显然也是在Travis上进行的,但无论我做什么,每次都会收到来自node-sassnode-gyp的错误。Travis在使用pytest时从节点sass中的打印语句抛出Python语法错误

我的测试都没有使用任何节点模块(如果甚至可能的话)。我确实使用了一口大嘴巴,但是在测试运行之前,它运行得很好。

以下是错误输出:

$ py.test --ds=<project>.settings.travis 
============================= test session starts ============================== 
platform linux -- Python 3.4.2 -- py-1.4.26 -- pytest-2.6.4 
django settings: <project>.settings.travis (from command line option) 
plugins: django 
collected 13 items/7 errors 
<project>/tests/test_<suite_1>.py .......... 
<project>/tests/test_<suite_2>.py ... 
==================================== ERRORS ==================================== 
ERROR collecting node_modules/gulp-sass/node_modules/node-sass/node_modules/node-gyp/gyp/pylib/gyp/MSVSSettings_test.py 
../../../virtualenv/python3.4.2/lib/python3.4/site-packages/_pytest/python.py:463: in _importtestmodule 
    mod = self.fspath.pyimport(ensuresyspath=True) 
../../../virtualenv/python3.4.2/lib/python3.4/site-packages/py/_path/local.py:629: in pyimport 
    __import__(pkgpath.basename) 
E  File "/home/travis/build/<user>/<project>/node_modules/gulp-sass/node_modules/node-sass/node_modules/node-gyp/gyp/pylib/gyp/__init__.py", line 37 
E  print '%s:%s:%d:%s %s' % (mode.upper(), os.path.basename(ctx[0]), 
E       ^
E SyntaxError: invalid syntax 
ERROR collecting node_modules/gulp-sass/node_modules/node-sass/node_modules/node-gyp/gyp/pylib/gyp/common_test.py 
../../../virtualenv/python3.4.2/lib/python3.4/site-packages/_pytest/python.py:463: in _importtestmodule 
    mod = self.fspath.pyimport(ensuresyspath=True) 
../../../virtualenv/python3.4.2/lib/python3.4/site-packages/py/_path/local.py:629: in pyimport 
    __import__(pkgpath.basename) 
E  File "/home/travis/build/<user>/<project>/node_modules/gulp-sass/node_modules/node-sass/node_modules/node-gyp/gyp/pylib/gyp/__init__.py", line 37 
E  print '%s:%s:%d:%s %s' % (mode.upper(), os.path.basename(ctx[0]), 
E       ^
E SyntaxError: invalid syntax 
ERROR collecting node_modules/gulp-sass/node_modules/node-sass/node_modules/node-gyp/gyp/pylib/gyp/easy_xml_test.py 
../../../virtualenv/python3.4.2/lib/python3.4/site-packages/_pytest/python.py:463: in _importtestmodule 
    mod = self.fspath.pyimport(ensuresyspath=True) 
../../../virtualenv/python3.4.2/lib/python3.4/site-packages/py/_path/local.py:629: in pyimport 
    __import__(pkgpath.basename) 
E  File "/home/travis/build/<user>/<project>/node_modules/gulp-sass/node_modules/node-sass/node_modules/node-gyp/gyp/pylib/gyp/__init__.py", line 37 
E  print '%s:%s:%d:%s %s' % (mode.upper(), os.path.basename(ctx[0]), 
E       ^
E SyntaxError: invalid syntax 
ERROR collecting node_modules/gulp-sass/node_modules/node-sass/node_modules/node-gyp/gyp/pylib/gyp/input_test.py 
../../../virtualenv/python3.4.2/lib/python3.4/site-packages/_pytest/python.py:463: in _importtestmodule 
    mod = self.fspath.pyimport(ensuresyspath=True) 
../../../virtualenv/python3.4.2/lib/python3.4/site-packages/py/_path/local.py:629: in pyimport 
    __import__(pkgpath.basename) 
E  File "/home/travis/build/<user>/<project>/node_modules/gulp-sass/node_modules/node-sass/node_modules/node-gyp/gyp/pylib/gyp/__init__.py", line 37 
E  print '%s:%s:%d:%s %s' % (mode.upper(), os.path.basename(ctx[0]), 
E       ^
E SyntaxError: invalid syntax 
ERROR collecting node_modules/gulp-sass/node_modules/node-sass/node_modules/node-gyp/gyp/pylib/gyp/generator/msvs_test.py 
../../../virtualenv/python3.4.2/lib/python3.4/site-packages/_pytest/python.py:463: in _importtestmodule 
    mod = self.fspath.pyimport(ensuresyspath=True) 
../../../virtualenv/python3.4.2/lib/python3.4/site-packages/py/_path/local.py:629: in pyimport 
    __import__(pkgpath.basename) 
E  File "/home/travis/build/<user>/<project>/node_modules/gulp-sass/node_modules/node-sass/node_modules/node-gyp/gyp/pylib/gyp/__init__.py", line 37 
E  print '%s:%s:%d:%s %s' % (mode.upper(), os.path.basename(ctx[0]), 
E       ^
E SyntaxError: invalid syntax 
ERROR collecting node_modules/gulp-sass/node_modules/node-sass/node_modules/node-gyp/gyp/pylib/gyp/generator/ninja_test.py 
../../../virtualenv/python3.4.2/lib/python3.4/site-packages/_pytest/python.py:463: in _importtestmodule 
    mod = self.fspath.pyimport(ensuresyspath=True) 
../../../virtualenv/python3.4.2/lib/python3.4/site-packages/py/_path/local.py:629: in pyimport 
    __import__(pkgpath.basename) 
E  File "/home/travis/build/<user>/<project>/node_modules/gulp-sass/node_modules/node-sass/node_modules/node-gyp/gyp/pylib/gyp/__init__.py", line 37 
E  print '%s:%s:%d:%s %s' % (mode.upper(), os.path.basename(ctx[0]), 
E       ^
E SyntaxError: invalid syntax 
ERROR collecting node_modules/gulp-sass/node_modules/node-sass/node_modules/node-gyp/gyp/pylib/gyp/generator/xcode_test.py 
../../../virtualenv/python3.4.2/lib/python3.4/site-packages/_pytest/python.py:463: in _importtestmodule 
    mod = self.fspath.pyimport(ensuresyspath=True) 
../../../virtualenv/python3.4.2/lib/python3.4/site-packages/py/_path/local.py:629: in pyimport 
    __import__(pkgpath.basename) 
E  File "/home/travis/build/<user>/<project>/node_modules/gulp-sass/node_modules/node-sass/node_modules/node-gyp/gyp/pylib/gyp/__init__.py", line 37 
E  print '%s:%s:%d:%s %s' % (mode.upper(), os.path.basename(ctx[0]), 
E       ^
E SyntaxError: invalid syntax 
===================== 13 passed, 7 error in 20.94 seconds ====================== 

回答

0

原来,这个问题是(旧)的pytest已经安装在特拉维斯满足在pytest-django的依赖版本。将pytest的正确版本添加到requirements.txt解决了问题。