在我的代码中,我有一行代表
print("Some string:", end=" ")
当我尝试运行pytest时,我得到以下内容:
ryansmacbook:scripts ryan$ py.test file.py
============================= test session starts ==============================
platform darwin -- Python 2.7.5 -- py-1.4.20 -- pytest-2.5.2
collected 0 items / 1 errors
==================================== ERRORS ====================================
________________________ ERROR collecting cpp-allman.py ________________________
/Library/Python/2.7/site-packages/pytest-2.5.2-py2.7.egg/_pytest/python.py:451: in _importtestmodule
> mod = self.fspath.pyimport(ensuresyspath=True)
/Library/Python/2.7/site-packages/py-1.4.20-py2.7.egg/py/_path/local.py:620: in pyimport
> __import__(modname)
E File "/Users/ryan/path/to/file.py", line 65
E "Some string:", end=" ")
E ^
E SyntaxError: invalid syntax
=========================== 1 error in 0.07 seconds ============================
当我注释掉print语句时,测试需要永远。我试图测试正则表达式(Testing regexes in Python using py.test),但这就是:
ryansmacbook:scripts ryan$ py.test file.py
============================= test session starts ==============================
platform darwin -- Python 2.7.5 -- py-1.4.20 -- pytest-2.5.2
collecting 0 items^C
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! KeyboardInterrupt !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
/Users/ryan/magzor/scripts/file.py:134: KeyboardInterrupt
============================= in 2397.55 seconds ==============================
在我实施可能的解决方案之前,测试需要30到60秒,但这似乎仍然太长。发生了什么事?
========================================
编辑:我注释掉了我的一部分代码,它从一个文件中读取并写入另一个文件但未包含在test_
前缀函数中。 Pytest现在运行大约0.03秒。这是为什么?我认为测试与程序功能无关。
答案 0 :(得分:0)
您需要在python3环境中安装py.test 。如果脚本直接由操作系统运行(即#!
),则只会获取带有python3的./file.py
行。
为了确保您正在调用py.test的正确版本,您可以将其作为python3 -m pytest
调用。注意py.test输出的第二行,当运行测试时,它会准确显示正在使用的python版本(在你的情况下是2.7.5)。
如果没有看到涉及的代码,速度问题可能是一个难以回答的单独问题。不知何故,注释掉的代码必须先被触发。这很可能是导入时的错误,因为py.test不会随机开始运行代码。