2016-08-17 8 views
1

unittestファイルにPandasデータフレームを作成しようとしたときにわからない問題が発生しました。このエラーは、クラス内の関数が呼び出される前に発生します。ここでunittestでパンダデータフレームを作成する

再現する簡単なコードされています。私が手にエラーがこれです

import unittest 
import pandas as pd 
import numpy as np 

class simpleTest(unitest.TestCase): 
    dates = pd.date_range('20160101', periods = 5) 
    dataDf = pd.DataFrame({'date': dates, 
      'count': np.array([3, 7, 4, 66, 9])}) 

    def doSomething(self): 
     pass 

if __name__ == '__main__': 
    unittest.main() 

Traceback (most recent call last): 
    File "tsa_test.py", line 31, in <module> 
    unittest.main() 
    File "/usr/local/Cellar/python/2.7.12/Frameworks/Python.framework/Versions/2.7/lib/python2.7/unittest/main.py", line 94, in __init__ 
    self.parseArgs(argv) 
    File "/usr/local/Cellar/python/2.7.12/Frameworks/Python.framework/Versions/2.7/lib/python2.7/unittest/main.py", line 149, in parseArgs 
    self.createTests() 
    File "/usr/local/Cellar/python/2.7.12/Frameworks/Python.framework/Versions/2.7/lib/python2.7/unittest/main.py", line 158, in createTests 
    self.module) 
    File "/usr/local/Cellar/python/2.7.12/Frameworks/Python.framework/Versions/2.7/lib/python2.7/unittest/loader.py", line 130, in loadTestsFromNames 
    suites = [self.loadTestsFromName(name, module) for name in names] 
    File "/usr/local/Cellar/python/2.7.12/Frameworks/Python.framework/Versions/2.7/lib/python2.7/unittest/loader.py", line 100, in loadTestsFromName 
    parent, obj = obj, getattr(obj, part) 
AttributeError: 'module' object has no attribute '-' 

答えて

2

あなたのunittestのコードには問題があります。あなたは右のサブクラスunittest.TestCaseで行ったので、このラインはOKです:

class simpleTest(unitest.TestCase): 

しかし、このクラスは、今のように見える方法を持っている必要があります。

 def test_foo(self): 
     ... 

(彼らはtest_で始まり、そしてすべき必要があることに注意してくださいtake self)。このような方法の省略はunittestを混乱させる。

さらにには、静的なクラスメンバーがあります。クラスメンバーは、おそらくクラスフィクスチャーとして使用することを意図しています。それはnot how it's done in unittestです。あなたのクラスは次のようになります:

class simpleTest(unitest.TestCase): 
    @classmethod 
    def setUpClass(cls): 
     cls.dates = pd.date_range('20160101', periods = 5) 
     cls.dataDf = pd.DataFrame({'date': cls.dates, 
      'count': np.array([3, 7, 4, 66, 9])}) 

    def test_foo(self): 
     # Note that here you access things like so: 
     self.dataDF 
     # even though you defined it as a class instance - that's how unittest works 
関連する問題