2016-12-29 85 views
0

我沒有在問題中編寫「Django」,因爲我認爲它不相關。我有一個Django的測試啓動這樣的:Python類構造函數不工作,給出的參數太多

class APITests(APITestCase): 

    def __init__(self): 

     self.token = "" 
     self.fixtures = ['tests/testdata.json'] 
     super(APITests, self).__init__() 

它不工作,它給我的錯誤:

TypeError: __init__() takes exactly 1 argument (2 given) 

誰能解釋一下我爲什麼?我該如何解決這個問題?

+0

那一行你有這個錯誤嗎?你能跟蹤一下嗎? – martianwars

+0

您應該將'self'作爲參數傳遞給'super(APITests,self).__ init __()'。 –

+0

每個Python問題都應該包含整個堆棧跟蹤以及由堆棧跟蹤指示的行。顯示類實例。 – skrrgwasme

回答

2

我不認爲你應該爲APITestCase實際覆蓋__init__。我認爲他們提供了可以被覆蓋的特殊setupteardown方法。

但是,如果你真的要覆蓋它,請確保您接受了由測試框架傳遞的所有參數:

class APITests(APITestCase): 
    def __init__(self, *args, **kwargs): 
     self.token = "" 
     self.fixtures = ['tests/testdata.json'] 
     super(APITests, self).__init__(*args, **kwargs) 

或將它們定義爲類屬性:

class APITests(APITestCase): 
    tokens = "" 
    fixtures = ('tests/testdata.json') 
    ...