Py.test运行速度非常慢(而且根本没有Python3语句)

时间:2014-04-02 21:04:25

标签: python python-3.x pytest

在我的代码中,我有一行代表

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秒。这是为什么?我认为测试与程序功能无关。

1 个答案:

答案 0 :(得分:0)

您需要在python3环境中安装py.test 。如果脚本直接由操作系统运行(即#!),则只会获取带有python3的./file.py行。

为了确保您正在调用py.test的正确版本,您可以将其作为python3 -m pytest调用。注意py.test输出的第二行,当运行测试时,它会准确显示正在使用的python版本(在你的情况下是2.7.5)。

如果没有看到涉及的代码,速度问题可能是一个难以回答的单独问题。不知何故,注释掉的代码必须先被触发。这很可能是导入时的错误,因为py.test不会随机开始运行代码。