2017-01-19 9 views
2

методы класса я получаю странные ошибки, когда я бегу nosetests:Nosetests и

====================================================================== 
ERROR: Extract test data from tarball. 
---------------------------------------------------------------------- 
TypeError: extract_test_data() missing 1 required positional argument: 'calling_file' 

Код в вопросе делится на два файла:

тесты/core.py

class CoreTestCase(unittest.TestCase): 
    @classmethod 
    def extract_test_data(cls, calling_file, base='data', name_only=False): 
     """Extract test data from tarball. 
      ... 
     """ 
     ... 

испытания /.../ test_this.py

class TestThis(core.CoreTestCase): 
    """Run some tests.""" 

    @classmethod 
    def setUpClass(cls): 
     cls.TESTDAT_DIR = cls.extract_test_data(__file__) 

Импорт и т. Д., Работайте правильно, и unittest не имеет проблем. Но по какой-то причине nose искажает вызов.

Я пробовал все следующие:

cls.TESTDAT_DIR = cls.extract_test_data(calling_file=__file__) 
cls.TESTDAT_DIR = cls.extract_test_data(cls,__file__) 
cls.TESTDAT_DIR = cls.extract_test_data(cls, calling_file=__file__) 

но я все еще получаю нечетное assortmenterrors:

TypeError: extract_test_data() got multiple values for argument 'calling_file' 
AttributeError: type object 'TestThis' has no attribute 'TESTDAT_DIR' 
+0

Try переименованием 'extract_test_data' к чему-то без слова' test' в нем, например 'extract_tst_data'. По умолчанию, nosetests ищет любую функцию/метод со словом 'test' в нем и обрабатывает их как тесты. –

ответ

3

nose пытается запустить extract_test_data как это тестовый блок. Переименуйте его, чтобы исключить маркер test или добавьте в extract_test_data:

from nose.tools import nottest 

class CoreTestCase(unittest.TestCase): 

@nottest 
@classmethod 
def extract_test_data(cls, calling_file, base='data', name_only=False): 
    """Extract test data from tarball. 
     ... 
    """ 
    ... 

EDIT: link к документации, где объясняется, что, по умолчанию, testMatch регулярное выражение будет запускать любую функцию, которая has test or Test at a word boundary or following a - or _

+0

Я думал, что это только проверенные методы, которые начинались с теста ... или это просто 'unittest'? – muppetjones

+0

По умолчанию ([link] (https://nose.readthedocs.io/en/latest/writing_tests.html#writing-tests)) будет запущена любая функция, которая 'имеет тест или тест на границе слова или после a - или _' – rtkaleta

+0

Фантастический! Благодаря! – muppetjones

Смежные вопросы