调用nosetests
可以得到以下信息:
======================================================================
ERROR: Failure: TypeError (__init__() takes exactly 2 arguments (1 given))
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/sheena/WORK/CriticalID/workspace/flow_env2/local/lib/python2.7/site-packages/nose-1.3.4-py2.7.egg/nose/loader.py", line 519, in makeTest
return self._makeTest(obj, parent)
File "/home/sheena/WORK/CriticalID/workspace/flow_env2/local/lib/python2.7/site-packages/nose-1.3.4-py2.7.egg/nose/loader.py", line 578, in _makeTest
return MethodTestCase(obj)
File "/home/sheena/WORK/CriticalID/workspace/flow_env2/local/lib/python2.7/site-packages/nose-1.3.4-py2.7.egg/nose/case.py", line 345, in __init__
self.inst = self.cls()
TypeError: __init__() takes exactly 2 arguments (1 given)
以及其他一些东西。在
我的目录结构如下:
^{pr2}$现在在很多文件中有很多测试,这个错误并没有告诉我错误是从哪里来的。你知道我怎么找到它吗?到目前为止,我能想到的最好的方法就是去掉所有的测试文件,然后一个一个地放回去,但这并不完全理想。在
通常的原因是,您在其中一个测试中使用的类没有导入到其中,或者该类中的导入已中断。或者有一个单独损坏的测试或导入的类,当通过全局nose测试用例运行器环境初始化其他测试时,该类是正常的,这是因为在另一个测试中导入了丢失的导入。 但是在测试类的初始加载或单个加载时,它将引发一个notfound或其他错误。但是nose并没有说明这一点,尽管它可能显示了类的初始化错误。在
因此,在测试环境中使用示例代码“goodies”中的某些内容在模块初始化时没有被传递一个参数,这是正确初始化它所必需的。但如果稍后在测试中初始化,则获取它。在
或者,你有一个方法意外地被称为test峎,它不是一个测试类(例如goodies中的某个地方或它使用的类),nose会在没有所需参数的情况下找到并初始化它。在
您可以尝试一个接一个地检查导入,将它们放回模块级别,然后在PythonShell上初始化problem类以修复它。在
我太想在这个问题上花太多时间了。在
如果使用
with-xunit
运行nosetests,您会注意到失败的测试记录在路径nose.failure.Failure.runTest
下。如果你尝试运行那个测试,它会说它不存在。这里发生了一些奇怪的事情。在有趣的是,如果你在
collect-only verbose
下运行它,你会得到Failure: TypeError (__init__() takes exactly 2 arguments (1 given)) ... ok
,所以某个东西首先被认为是一个测试,而它可能不应该被识别,然后它会立即失败。evilly,与失败测试相邻的两个包都通过了,因此即使确定哪个文件失败也不容易。在事实证明,有人创建了一个名为
test
的非测试文件。鼻子试图将其解释为测试,因此出现了错误。在不幸的是,我不得不手动运行每个程序包来解决这个问题。可以这样做的一种方法是
find /path/to/package -name "*test*.py
,然后grep处理任何不在测试目录中的内容。在解决方案:
从脚本顶部删除import语句。在
为什么:
在找到测试文件后,我按照Evert的建议使用
-vv
选项执行了nosetests
。结果显示错误信息不是来自任何特定的测试。也就是说,测试按预期运行,这些错误只是被标记到输出上。输出如下:唯一不在测试用例中的是import语句。所以我就把它们移到用过的地方。在
为什么会这样?任何知道的人都可以获得奖励积分
再说一次,我不想通过阅读大量的代码来找到答案
说明性代码:
^{pr2}$此代码没有错误:
相关问题 更多 >
编程相关推荐