Подтвердить что ты не робот

Попытка реализовать python TestSuite

У меня есть два тестовых примера (два разных файла), которые я хочу объединить в тестовом комплекте. Я могу заставить тесты запускать, просто запустив python "обычно", но когда я выбираю запустить python- unit test, он говорит, что выполняется 0 тестов. Прямо сейчас я просто пытаюсь получить хотя бы один тест, чтобы работать исправно.

import usertest
import configtest # first test
import unittest   # second test

testSuite = unittest.TestSuite()
testResult = unittest.TestResult()
confTest = configtest.ConfigTestCase()
testSuite.addTest(configtest.suite())
test = testSuite.run(testResult)
print testResult.testsRun # prints 1 if run "normally"

Вот пример моего тестового примера

class ConfigTestCase(unittest.TestCase):
    def setUp(self):

        ##set up code

    def runTest(self):

        #runs test


def suite():
    """
        Gather all the tests from this module in a test suite.
    """
    test_suite = unittest.TestSuite()
    test_suite.addTest(unittest.makeSuite(ConfigTestCase))
    return test_suite

if __name__ == "__main__":
    #So you can run tests from this module individually.
    unittest.main()

Что мне нужно сделать, чтобы правильно выполнить эту работу?

4b9b3361

Ответ 1

вы хотите использовать тест. Поэтому вам не нужно называть unittest.main(). Использование тестов должно быть таким.

#import usertest
#import configtest # first test
import unittest   # second test

class ConfigTestCase(unittest.TestCase):
    def setUp(self):
    print 'stp'
        ##set up code

    def runTest(self):

        #runs test
    print 'stp'

def suite():
    """
        Gather all the tests from this module in a test suite.
    """
    test_suite = unittest.TestSuite()
    test_suite.addTest(unittest.makeSuite(ConfigTestCase))
    return test_suite

mySuit=suite()


runner=unittest.TextTestRunner()
runner.run(mySuit)

Ответ 2

Весь код для создания загрузчика и набора не нужен. Вы должны написать свои тесты, чтобы их можно было запустить с помощью тестового обнаружения, используя ваш любимый тестовый бегун. Это означает, что вы называете ваши методы стандартным способом, помещая их в импортируемое место (или передавая папку, содержащую их в бегун), и наследуя от unittest.TestCase. После того, как вы это сделали, вы можете использовать python -m unittest discover у самого простого или лучшего стороннего участника, чтобы обнаружить и затем запустить ваши тесты.

Ответ 3

Если вы пытаетесь вручную собрать TestCase s, это полезно: unittest.loader.findTestCases():

# Given a module, M, with tests:
mySuite = unittest.loader.findTestCases(M)
runner = unittest.TextTestRunner()
runner.run(mySuit)

Ответ 4

Я предполагаю, что вы ссылаетесь на запуск python- unit test против модуля, который объединяет два теста. Он будет работать, если вы создадите тестовый пример для этого модуля, т.е. подклассом unittest.TestCase и имеющим простой тест, который начинается со слова "тест".

например.

class testall(unittest.TestCase):

    def test_all(self):           
        testSuite = unittest.TestSuite()
        testResult = unittest.TestResult()
        confTest = configtest.ConfigTestCase()
        testSuite.addTest(configtest.suite())
        test = testSuite.run(testResult)
        print testResult.testsRun # prints 1 if run "normally"

if __name__ == "__main__": 
      unittest.main()