запуск тестов с помощью nose

Всем привет.
Имею следущую структуру проекта

ForTest
├── test_module
│   └── test_suite.py
└── test_runner.py

Содержание test_suite.py:

def test_1():
    pass


def test_2():
    pass

test_runner.py:

import nose

nose.main(argv=['','-v'])

Когда я запускаю python test_runner.py, в консоль выводится следующее:

test_suite.test_1 ... ok
test_suite.test_2 ... ok
test_suite.test_1 ... ok
test_suite.test_2 ... ok

----------------------------------------------------------------------
Ran 2 tests in 0.002s

OK

Тесты запускают по 2 раза каждый… Если из командной строки вызывать nosetests -v, то все выглядит абсолютно нормально, и тесты ранаются один раз.

Как правильно сконфигурировать запуск тестов непосредственно из кода? и чем объясняется такое поведение ?

1 лайк

Разрешено, путем замены кода раннера с:

nose.main(argv=['','-v'])

на:

if __name__ == '__main__':
    nose.main(argv=['','-v'])

Может быть кто-нибудь может объяснить почему так?

2 лайка

Это из-за того, что у вас название файла содержит в начале “test”.
Nose считает, что файл - test_runner.py содержит набор тестов и запускает их тоже.