gpt4 book ai didi

python - LPTHW :Ex48 Unit test(using nosetests), 类、方法参数类型错误

转载 作者:行者123 更新时间:2023-12-01 05:57:42 27 4
gpt4 key购买 nike

我是通过 LPTHW 工作的新手 This is the link for it 。在 ex48 中,我得到了很多代码作为单元测试,我应该编写相应的 my_code 来进行测试(使用 Nose 测试,抱歉这句话中有很多测试。)

这是我的代码:

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.

但是,当我运行 Nose 测试时,我收到以下错误:

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)

这很奇怪,因为这两个参数之一是 self 参数,我认为不应该给出它。

为了解决这个问题,我尝试过:

@staticmethod
def scan(self,stuff):

但这给了我相同的类型错误

接下来我尝试了:

assert_equal(lexicon.__init__(self).scan(...)

但这也不起作用(我认为 .init(self) 应该在另一个类中使用,而不是仅在词典中使用,而不是在主类中使用)。

我最终决定:

lexicon1=lexicon()
def test_directions():
assert_equal(lexicon1.scan("north"), [('direction', 'north')])

但这不是练习应该进行的方式!

P.S:我没有包含整个回溯,因为它可能没有必要(而且已经很晚了)。我没有包含部分代码,因为我确信它工作正常并且不会导致错误!

最佳答案

我认为你这样做的方式(创建一个实例,然后使用它的方法——你的例子是 lexicon1)很好,对吧?

如果你想用第一种方法,你尝试过吗:

@classmethod
def scan(self, stuff):

我也是新手(刚刚完成练习 49),所以也许其他人可以更好地回答。不过,很好奇 @classmethod 装饰器是否能满足您的需求。

关于python - LPTHW :Ex48 Unit test(using nosetests), 类、方法参数类型错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11750765/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com