我是通过 LPTHW 工作的新手这是它的链接。在 ex48,我得到了很多代码作为单元测试,我应该编写相应的 my_code 来进行测试(使用nosetests,对不起,这句话中有很多测试。)
这是我的代码:
class lexicon(object):
def __init__(self):
#some initial stuff.
def scan(self,stuff):
#some cool code.
这是 test.py 文件
from nose.tools import*
from Ex48.code import lexicon
def test_directions():
assert_equal(lexicon.scan("north"), [('direction', 'north')])
...#Unimportant details the above is enough.
但是,当我运行鼻子测试时,我收到以下错误:
Traceback (most recent call last):
File "c:\python31\lib\site-packages\nose'case.py", line 197, i runTest
... line x, in test_directions
assert_equal(lexicon.scan("north"), [('direction', 'north')])
TypeError: scan() takes exactly 2 positional arguments (1 given)
这很奇怪,因为这两个论点之一是自我论点,我认为不应该给出它。
为了解决这个问题,我尝试过:
@staticmethod
def scan(self,stuff):
但这给了我相同的 typeError
接下来我尝试了:
assert_equal(lexicon.__init__(self).scan(...)
但这也不起作用(我认为.init (self) 应该在另一个类中使用,而不是只在词典中使用,而不是在 main 中)。
我最终决定:
lexicon1=lexicon()
def test_directions():
assert_equal(lexicon1.scan("north"), [('direction', 'north')])
但这不是练习应该如何进行的!
PS:我没有包括整个追溯,因为它可能没有必要(而且已经很晚了)。我没有包含我的部分代码,因为我确信它可以正常工作并且不会导致错误!