Нос не может найти тесты в ubuntu

Есть ли причина, по которой Нос не сможет найти тесты в Ubuntu 9.04?

Я использую нос 0.11.1 с python 2.5.4.
Я могу запускать тесты только в том случае, если я явно указываю имя файла. Если я не укажу имя файла, которое он просто говорит, 0 тестов .

Тот же проект отлично работает на моем Mac, так что я совершенно тупой!

  • Веб-API в колбе
  • Прослушать простой звуковой сигнал с помощью python без внешней библиотеки
  • Python - Предыдущие и следующие значения внутри цикла
  • Как эффективно и систематически перегружать методы класса Python
  • Генераторы и оператор yield
  • колба перед запросом - добавление исключения для определенного маршрута
  • Использование Python Fabric без инструмента командной строки (fab)
  • Как я могу заглянуть внутрь объекта Python?
  • 6 Solutions collect form web for “Нос не может найти тесты в ubuntu”

    Некоторые, что связано, если вы запускаете тесты из каталога, т.е.

     nosetests ... tests/ 

    где тесты – это имя папки с моими тестами и имеют отдельные функции тестирования python в одном из .py-модулей … Ваши функции должны начинаться с «теста», когда носетисты распознают это как тест, который вы хотите запустить.

    например:

      def test_something(): ... 

    nosetests будут запускать эту функцию при выполнении в этом каталоге, пока

      def somethin_to_test(): ... 

    не будет.

    Другая вещь, которая всегда вызывает у меня nose заключается в том, что она не будет запускать тесты в исполняемых файлах. Я не совсем уверен, почему это повлияет на Mac / Ubuntu, но это стоит того.

    Убедитесь, что скрипты каким-то образом не получили chmod +x 'd на Mac … И если они это сделали, исправьте их с помощью chmod -x $(find tests/ -name '*.py') .

    Такое поведение почти наверняка связано с тем, что ваши файлы не указаны в соответствии с поведением тестирования соответствия носа. Из носовых документов :

    нос автоматически собирает тесты из исходных файлов, каталогов и пакетов python, найденных в его рабочем каталоге (который по умолчанию соответствует текущему рабочему каталогу). Любой исходный файл, каталог или пакет python, который соответствует регулярному выражению testMatch (по умолчанию: (?: ^ | [B_.-]) [Tt] est), будет собираться в качестве теста (или источника для сбора тестов).

    Акцент был мой.

    Некоторые имена примеров, которые будут соответствовать:

    • TestFoo.py
    • Foo-Test.py
    • Foo_Test.py
    • Foo.Test.py (обратите внимание, что этот будет пытаться импортировать Foo и будет вызывать исключение, если он не может)

    Имя, похожее на него, будет соответствовать, но на самом деле это не так:

    • FooTest.py

    Если вы просто переименуете свои файлы, вам должно быть хорошо идти.


    Обновление : прочитали ли вы эту запись в блоге ? Я не смог рассказать о деталях, которые вы опубликовали, но, возможно, в ваших тестовых каталогах отсутствуют файлы __init__.py ?

    … убедитесь, что ваши «тестовые» каталоги на самом деле являются модулями (у них есть пустой файл __init__.py ).

    У меня такая же проблема. Мои тесты прошли отлично в Windows, но не в Ubuntu.

    В Ubuntu, если вы запустите:

     nosetests -vv --collect-only 

    Вероятно, вы увидите, что он пропускает ваш тестовый файл, потому что он является исполняемым: _Tools / LintControlFiles / test_HgLint.py является исполняемым; пропущено

    Чтобы получить нос для рассмотрения исполняемых файлов, выполните его следующим образом:

     nosetests --exe 

    Я могу подтвердить, что, как сказал @ david-wolever, они не могут быть исполняемыми на Ubuntu. Бег

     nosetests -vv --collect-only 

    для просмотра полной информации о том, какие файлы были проверены.

    Просмотрев источник носа, в частности файл selector.py, если вы посмотрите, что происходит,

    https://github.com/nose-devs/nose/blob/master/nose/selector.py#L129

    При проверке, хотим ли мы wantFile , self.matches , который затем выполняет поиск по regex против match , который вы бы прошли в качестве testMatch .

    Проблема возникает, когда вы затем проверяете позже (и, в этом файле)

    https://github.com/nose-devs/nose/blob/master/nose/selector.py#L152

    Он снова запускает один и тот же тип проверок, против функции wantFunction .

    Это означает, что если у вас есть другая структура для вашего пакета, ваш файл pyfile и ваш фактический класс / функция теста, вам нужно создать сумасшедшее сложное регулярное выражение, чтобы оно соответствовало этому на каждом этапе.

    Для меня, когда я узнал об этом, я решил префикс моих пакетов, контейнеров и тестовых функций с общим битом, т. Е.

    setests ├── __init__.py ├── setest_area1.py └──── def setest_someblock(): ...

    И тогда моя команда nose работает,

    nose --testMatch="setest"

    Это затем фильтрует, как я ожидаю, что он будет работать.

    Python - лучший язык программирования в мире.