2016-08-17 7 views
1

Я сталкиваюсь с проблемой, которую я не понимаю при попытке создать кадр данных Pandas в файле 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, так что эта линия в порядке:

class simpleTest(unitest.TestCase): 

Однако этот класс теперь должен иметь методы, которые выглядят как:

 def test_foo(self): 
     ... 

(обратите внимание, что они должны начать с test_, и должны возьмите 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 
Смежные вопросы