Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 12740
Последний выпуск: 9.07.2014

Вопросы и ответы - Форум

unittest. Тесты пустоты.

0спам
17
04 октября 2009 года
Kogrom
2.7K / / 02.02.2008
Решил изучить модуль Unit-тестов в Python. Ну и заодно поделиться с другими. Обычно в примерах создают какой-то класс для тестирования. Я в своем примере решил ничего конкретного не тестировать, а показать, как можно объединять тесты из нескольких модулей + развлечься с разными ассертами.

Первый модуль: TestNone1.py
Код:
#!/usr/bin/env python
#coding=utf-8

import unittest

class TestNone1 (unittest.TestCase):
 
    def testOne(self):
        self.assertEqual(1, 1)
 
    def testTwo(self):
        self.assert_(2 == 2)
 
    def testThree(self):
        self.assertFalse(3 != 3)


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

Второй модуль: TestNone2.py
Код:
#!/usr/bin/env python
#coding=utf-8

import unittest

class TestNone2 (unittest.TestCase):
 
    def testOne(self):
        self.assertAlmostEqual(1.0001, 1.0002, 2)
 
    def testTwo(self):
        self.assertRaises(ZeroDivisionError, lambda: 1 / 0)
 
    def testThree(self):
        pass
 
class TestNone3 (unittest.TestCase):
 
    def test(self):
        self.assertNotAlmostEqual(3, 33)
 
    def setUp(self):
        print "...\nTestNone3.setUp\n..."
 
    def tearDown(self):
        print "...\nTestNone3.tearDown\n..."
 
if __name__ == "__main__":
    unittest.main()

Ну и объединяем все тесты: MainTest.py
Код:
#!/usr/bin/env python
#coding=utf-8

import unittest

def suite():
    suite = unittest.TestSuite()
    loadTests = unittest.defaultTestLoader.loadTestsFromModule
   
    import TestNone1
    suite.addTest(loadTests(TestNone1))
    # альтернатива:
    suite.addTest(loadTests(__import__("TestNone2")))
   
    return suite
   
if __name__ == "__main__":
    unittest.TextTestRunner(verbosity = 2).run(suite())
    #raw_input()


Ну вот, теперь можно модули тестировать отдельно и вместе. Кроме того, MainTest.py содержит функцию, которая возвращает весь набор тестов. То есть, этот файл можно легко объединить с другими тестирующими модулями.

Принимается критика и вопросы :)

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог