2

Я надеялся, что кто-то не прочь объяснить, что здесь происходит. Я пытаюсь запустить python unittest, который был подтвержден для работы с использованием python 2.7. Однако при попытке запустить этот же тест на машине под управлением python 2.6 я получаю сообщение об ошибке, которое я не могу понять. Вот пример того, что происходитПеременные класса Python Unittest

import re, string, os, subprocess, unittest 
import MERCH_FUNCTIONS 


class merchTests(unittest.TestCase): 
    @classmethod 
    def setUpClass(self): 
     self._merchFileString=open("test_file.txt",'r').read() 
     self._merchFileList=self._merchFileString.split("\n") #convert string to list 

    def test_stuff(self): 
     #print list 
     print(self._merchFileList) 
if __name__ == '__main__': 
    unittest.main() 

По какой-то причине, если я запускаю этот код, используя Python 2.7 успешно работает тест, и список self._merchFileList печатает.

Однако при выполнении этого же код с Python 2.6 Я получаю следующее сообщение об ошибке (ы):

====================================================================== 
ERROR: test_stuff (__main__.merchTests) 
---------------------------------------------------------------------- 
Traceback (most recent call last): 
    File "MERCH_Test_Case.py", line 14, in test_stuff 
    print(self._merchFileList) 
AttributeError: 'merchTests' object has no attribute '_merchFileList' 

---------------------------------------------------------------------- 
Ran 1 test in 0.000s 

FAILED (errors=1) 

Я не могу за жизнь мне понять, что здесь происходит. Я пробовал несколько разных вещей без успеха. Если бы кто-то был так добр, чтобы объяснить, что здесь происходит, я бы очень признателен.

Заранее спасибо.

ответ

6

setUpClass был introduced in python2.7. Поэтому он не вызывается автоматически при запуске с более ранними версиями (например, Python 2.6).

+1

Gah, спасибо, сэр! Решение использует «SetUp» вместо «SetUpClass». –

+0

@Dr. Вы знакомы с различием между SetUp и SetUpClass? –

+0

Я не совсем понимаю это. Один из них - метод подкласса, а другой - метод класса, правильно? Вы можете объяснить? –