更新:如果我改变
from scitools.std import *
到例如。
from scitools.std import sqrt, zeros
一切正常..
我正在尝试运行nosestests -s myfile.py,但我一直都会遇到这个错误:
======================================================================
ERROR: Test if modulename can be imported, and if not, write
----------------------------------------------------------------------
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/nose/case.py", line 197, in runTest
self.test(*self.arg)
File "/usr/local/lib/python2.7/dist-packages/nose/util.py", line 613, in newfunc
return func(*arg, **kw)
TypeError: test_if_module_exists() takes at least 1 argument (0 given)
方案:
from scitools.std import *
import nose.tools as nt
def test_test():
diff = 1E-6
nt.assert_almost_equal(diff, 0, delta=1E-5)
def main():
print __name__
if __name__ == "__main__":
main()
我正在运行Nose 1.3.0。已经在互联网上搜索过解决方案,找不到东西!
谢谢你们!
答案 0 :(得分:1)
因为你正在使用通配符导入... 不要使用通配符!
基本上当你说
时from scitools.stf import *
您还要导入以下所有内容:
鼻子的工作方式是它在模块中查找名为test_
的所有函数。这包括您编写的每个函数以及您导入的每个函数。这称为Duck typing。因此,如果有一个函数你不想让鼻子试图运行,不要导入它。当您使用通配符导入时,您正在导入所有内容,这就是为什么使用通配符不是一个好主意的原因。只需导入您需要的功能,例如
from scitools.std import sqrt, zeros