Использование носа для тестирования смешанного кода python2 и python3

У меня есть проект, в котором есть код python2 и python3 (это клиент/сервер; сервер - python3, но есть клиенты python2 и python3). Я использую нос для модульного тестирования. Макет каталога (в настоящее время) в основном похож на

client2
    tests
client3
    tests
server
    tests

Есть ли способ настроить или использовать нос, чтобы работающий узел с python2 получал только тесты python2 и аналогично python3. Например, что-то вроде:

client2
    tests2
client3
    tests3
server
    tests3

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


person Mike Richardson    schedule 03.04.2014    source источник


Ответы (1)


Похоже, вам понадобится комбинация --where и --py3where:

--py3где:

Найдите тесты в этом каталоге под Python 3.x. Функционирует так же, как «где», но применяется только при работе под Python 3.x или выше. Обратите внимание, что если эта опция присутствует в 3.x, она полностью заменяет все каталоги, указанные с помощью «где», поэтому опция «где» становится недействительной. [НОС_PY3ГДЕ]

Итак, для вас это будет что-то вроде этого:

nosetests --where=. --where=client2 --py3where=. --py3where=client3 --py3where=server -v

При использовании носовых тестов с python3 будут запускаться только тесты client3 и server. При работе на python2 он будет запускать только client2 тестов.

Кроме того, взгляните на этот вопрос и ответы для альтернатив.

person Oleksiy    schedule 04.04.2014