Почему ничто не находит ничего?
Я перехожу из python unittest framework в nosetests, пытаясь повторно использовать my unittest.TestCase
s
После cd
в мой тестовый пакет я начал nosetests как описано на их домашней странице:
./test/$ nosetests
----------------------------------------------------------------------
Ran 0 tests in 0.000s
OK
Почему мне нужно указывать каждый модуль, чтобы нос обнаруживал его тесты, как в следующем примере?
./test/$ nosetests test_all.py
.......
----------------------------------------------------------------------
Ran 7 tests in 0.002s
OK
Также при запуске тестов одна папка выше ничего не меняет.
./tests/$ cd ..
./$ nosetests
----------------------------------------------------------------------
Ran 0 tests in 0.000s
OK
Ответы
Ответ 1
Я могу видеть в вашем репо, что хотя бы некоторые из файлов исполняемы, так что это по крайней мере часть проблемы. По умолчанию нос не будет собирать те: он пытается избежать запуска скриптов, которые могут сделать что-то разрушительное при импорте. Попробуйте флаг -exe или удалите исполняемый бит из тестовых файлов.
Ответ 2
Вам нужно быть в указанном выше каталоге, если вы хотите, чтобы нос запускал все тесты в этом пакете.
Ответ 3
В моем случае у меня была следующая строка в конце тестовых файлов:
unittest.main()
Удаление этого из всех моих тестов решило мою проблему.
Ответ 4
Я вижу тот же вывод для кода ниже, если его запускают как _nosetests test_runner.py_ , но, если он работает так же, как _python test_runner.py_ работает отлично, я полностью смущен, я новичок в python, любезно Помоги мне
версия python 2.7 в Mac
код
import unittest
import A_Suite
import B_Suite
class DemoTest ():
def runTest(self):
""" Test addition and succeed. """
self.failUnless ( 1 + 1 == 2, 'one plus one fails!' )
self.failIf ( 1 + 1 != 2, 'one plus one fails again!' )
self.failUnlessEqual ( 1 + 1, 2, 'more trouble with one plus one!' )
def suite():
suite = unittest.TestSuite ()
suite.addTest ( issue1Suite.A_Suite () )
suite.addTest ( issue2Suite.B_Suite () )
return suite
if __name__ == '__main__':
runner = unittest.TextTestRunner ()
test_suite = suite ()
runner.run ( test_suite )
unittest.main ()