我正在尝试为一个类中的函数编写单元测试,但我遇到了一些麻烦。在将导入器功能移动到类中之前,此测试有效。但是,现在我得到了TypeError: grab_column_locations missing 1 required positional argument: 'sheet'
。导入器函数本身正在正确解析sheet
并在程序运行时正常工作,但在测试时则无法正常工作。
TypeError在导入器函数中引用的行是:
columns = self.grab_column_locations(sheet)
失败的测试是:
from unittest import TestCase
from gtt import GTT
class TestGTT(TestCase):
def test_importer(self):
"""
Test import of valid xlsx file
:return:
"""
file_list = ['testData_1.xls']
# Run Test 1
importer_results = GTT.importer(GTT, file_list)
assert importer_results[0] == True
基本上,从测试开始,importer
未将sheet
传递给grab_column_locations
。这只是在我将这两个函数都移到一个类中时才开始发生的。我知道我以某种方式破坏了什么,但是什么?
答案 0 :(得分:0)
错误消息说明:
TypeError: grab_column_locations missing 1 required positional argument: 'sheet'
这听起来像是函数签名:
def grab_column_locations(self, sheet):
您是不是从拥有此功能的类的实例调用它?
即,如果函数属于类Foo
:
class Foo:
def grab_column_locations(self, sheet):
...
错误消息让我认为您正在调用该函数,如下所示:
Foo.grab_column_locations(sheet)
当你真的应该打电话时:
foo = Foo()
foo.grab_column_locations(sheet)
或者,如果您不想将其绑定到实例,则可以将该功能定义为类方法:
class Foo:
@classmethod
def grab_column_locations(self, sheet):
...
然后你可以按如下方式调用它:
Foo.grab_column_locations(sheet)
但无论如何,这只是猜测,因为你没有提供太多细节。