2016-08-06 7 views
-1

クラス内の関数の単体テストを作成しようとしていますが、少し問題があります。インポータ関数をクラスに移す前に、このテストが機能しました。しかし、今私はTypeError: grab_column_locations missing 1 required positional argument: '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

ディレクトリ構造はどのようなものですか?また、grab_column_locations関数はどのように見えますか? – Seekheart

答えて

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): 
     ... 

は、その後、あなたがそれを呼び出すことができます:あなたはインスタンスにバインドしたくない場合はedはクラス方法として、

Foo.grab_column_locations(sheet) 

をしかし、いずれにせよ、これはありますあなたはあまり詳細を述べなかったので、ちょっと推測してください。

関連する問題