私はLPTHWを介して作業している初心者ですこれはそれへのリンクです。ex48では、テストされる対応するmy_codeを書き込むことになっているユニットテストとして多くのコードが与えられます(nosetestsを使用して、この文で多くのテストを申し訳ありません)。
これはmy_codeです:
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.
ただし、nosetestsを実行すると、次のエラーが発生します。
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)
これらの2つの引数の1つは自己のものであり、私はそれを与えるべきではないと思ったので、これは奇妙です。
この問題を解決するために私は試しました:
@staticmethod
def scan(self,stuff):
しかし、これは私に同じtypeErrorを与えました
次に試しました:
assert_equal(lexicon.__init__(self).scan(...)
しかし、これも機能しませんでした(.init(self)は、メインではなく、レキシコンのみ以外のクラスで使用する必要があると思います)。
私は最終的に次のように解決しました:
lexicon1=lexicon()
def test_directions():
assert_equal(lexicon1.scan("north"), [('direction', 'north')])
しかし、これは演習が行われることになっている方法ではありません!
PS:トレースバックは必要ないかもしれないので(そして非常に遅くなっているので)、トレースバック全体を含めませんでした。コードの一部を含めませんでしたbc正常に動作し、エラーの原因ではないと確信しています。