Python - Запуск токса + тестирование носа на Python 3.2 testenv - PullRequest
7 голосов
/ 13 марта 2012

Я пытался внедрить систему тестирования из одного источника, которая позволяла бы автоматизировать тестирование на нескольких версиях Python с использованием tox + тесты носа.

Проблема в том, что я не могу заставить его работать, когда я тестирую на Python 3.2. Все работает нормально, если исключить Python 3.2.

Вот мой tox.ini:

[tox]
envlist = py25,py26,py27,py32,pypy,jython

[testenv]
commands =
    nosetests []
deps =
    nose
    mock

[testenv:py32]
commands =
    nosetests []

и мой ~/.noserc:

[nosetests]
verbosity=2
with-doctest=1

Я установил флаг use_2to3 на True в моем файле setup.py, но эта ошибка продолжает появляться: NameError: global name 'basestring' is not defined. Кажется, мне не хватает некоторых настроек, которые должны заставить 2to3 работать, но я не знаю, что это такое.

Кроме того, я попытался заменить nosetests [] на python setup.py test в настройке testenv:py32. К сожалению, появляется не только одна и та же ошибка, но и другая ошибка: Error in atexit._run_exitfuncs: TypeError: 'NoneType' object is not callable.

Есть указатели?

РЕДАКТИРОВАТЬ: добавлен код в setup.py, в случае, если это полезно:

# handle python 3
if sys.version_info >= (3,):
    use_2to3 = True
else:
    use_2to3 = False

и где-то в setup(): use_2to3 = use_2to3

1 Ответ

1 голос
/ 23 ноября 2012

Вы можете использовать что-то подобное в разделе [testenv]:

changedir = {envtmpdir}
commands = nosetests package  # "package" is import name of the package under test

или если у вас есть тесты в каталоге, отличном от пакета:

changedir = tests  # directory where tests are living
commands = nosetests []

Это должно предотвратитьнос от выбора неправильной версии пакета.

...