tl.testing надає різні утиліти, які можуть бути використані при написанні тестів & NBSP ;. Він сумісний з Python версії 2.6 та 2.7.
Пісочниці каталогів і файлів
При тестуванні коду, який змінює файли і каталоги, корисно, щоб мати можливість створювати і перевіряти зразок дерево каталогів і файлів легко. Модуль tl.testing.fs забезпечує підтримку для створення дерева з текстового опису, перерахування його в тому ж форматі і прибирати за собою.
У тесті DOC, ці кошти можуть бути використані, як це створити і вказати каталог, файл і символічне посилання:
>>> Від tl.testing.fs імпорту new_sandbox, Ls
>>> New_sandbox ("" "
... D Foo
... F Foo / бар ASDF
... Я Баз -> Foo / бар
... "" ")
>>> Ls ()
л Баз -> Foo / бар
d Foo
F Foo / бар ASDF
См файлу fs.txt знайти з вихідним кодом для подальших консультацій, в тому числі, як встановити і знести тести з використанням файлової системи пісочниці.
Установка викликаються скрипти
Деякі функції можна було б хотіти, щоб перевірити робить використання зовнішніх програм, таких як пейджер або в текстовому редакторі. Модуль tl.testing.script надає утиліти, які встановлюють прості макети скрипти в місцях, де код бути перевірені знайдете їх. Вони приймають рядок Python код і створити сценарій оболонки, який задає шлях Python, щоб відповідати, що випробування і виконує код.
Це, як, наприклад макет сценарій може бути використаний у випробуванні Doc:
>>> Від tl.testing.script імпорту встановити
>>> Script_path = встановити ("друк" простий скрипт. ")
>>> Печатки відкритою (script_path) .read ()
#! ...
імпорт SYS
sys.path [:] = [...]
Друк "простий скрипт.
>>> Імпорту подпроцесс
>>> Півдню = subprocess.Popen (script_path, оболонки = True, STDOUT = subprocess.PIPE)
>>> Стандартний висновок, STDERR = sub.communicate ()
>>> Печатки стандартний висновок
Простий скрипт.
См файлу script.txt знайти з вихідним кодом для подальших можливостей, як встановити та під'їзних макет сценаріїв, а також, як знести випробувань з використанням фіктивних скрипти.
Док-тестування графічного вмісту в Каїрі поверхонь
Хоча це прямо вперед, щоб порівняти зміст двох Каїрі поверхонь в Python коду, обробки графіки виходить документують випробувань. Тим не менш, пакет Мануель можуть бути використані для вилучення більш тестових з текстового документа, дозволяючи змішувати їх з документують випробувань природним чином.
Модуль tl.testing.cairo надає пакет тестування, завод, який використовує Мануель виконати графічні тести, сформульовані як реструктуризація текстових фігур. Підпис такої фігури, як передбачається, буквальне вираз Python, значення якого Каїр поверхню, а його образ використовується в якості тестового очікування.
Це, як поверхня може бути в порівнянні з очікуваним зображення в тесті Doc:
>>> Імпорту Каїр
>>> Від pkg_resources імпорт resource_filename
>>> IMAGE = resource_filename ('tl.testing', 'testimages / correct.png')
.. Цифра :: TL / тестування / testimages / correct.png
І NBSP; `` cairo.ImageSurface.create_from_png (зображення) ``
См файлу cairo.txt знайти з вихідним кодом для подальших консультацій та документації про можливий вихід випробувань.
Робота з потоками в тестовому коді
Стандартний клас TestCase не збирає помилки і невдачі, які відбулися в інших потоках, крім головної. Модуль tl.testing.thread забезпечує потокові класи та клас ThreadAwareTestCase, щоб тільки, що, як і деякі інші зручності для тестів, які мають справу з потоками: запобігання очікуваних необроблених винятків у потоках від друкується з виходом тесту, теми доповідей залишив за допомогою тесту, біг код в демона нитка, що з'єднує теми та підрахунку теми під час виконання тесту в:
>>> Час імпорт
>>> Імпорту tl.testing.thread
>>> Класу SampleTest (tl.testing.thread.ThreadAwareTestCase):
...
... Def test_error_in_thread_should_be_reported (само):
... З tl.testing.thread.ThreadJoiner (1):
... Self.run_in_thread (лямбда: 1/0)
...
... Чіткості test_active_count_should_count_only_new_threads (Self):
... З tl.testing.thread.ThreadJoiner (1):
... Self.run_in_thread (лямбда: time.sleep (0,1))
... Self.assertEqual (1, self.active_count ())
... Self.assertEqual (0, self.active_count ())
>>> Імпорту UnitTest
>>> Run (unittest.makeSuite (SampleTest))
================================================== ====================
ПОМИЛКА: test_error_in_thread_should_be_reported (__builtin __ SampleTest.)
-------------------------------------------------- --------------------
Traceback (останній виклик останнього):
І NBSP; ...
ZeroDivisionError: цілочисельне ділення або модулю на нуль
-------------------------------------------------- --------------------
Ран 2 випробування в N.NNNs
НЕ (помилки = 1)
Дивіться файл thread.txt знайти з вихідним кодом для більш докладної інформації про клас ThreadAwareTestCase.
Будівництво тестові набори, які використовують Мануель
Як Мануель надає деякі потужні функції на додаток до стандартних doctests Мануель набору тестів налаштувати дещо відрізняється від стандартних. Tl.testing.doctest Модуль реалізує DocFileSuite завод, який може бути використаний як стандартної, але створює набір тестів за допомогою Мануель і дозволяє деякі додаткові налаштування, пов'язані з Мануелем, серед них здатність інтерпретувати виноски, які використовували бути зроблено за допомогою застарілої zope.testing.doctest:
>>> Sample_txt = запису ('sample.txt "," ""
... [#footnote] _
... >>> Х
... 1
...
... .. [#footnote]
... >>> Х = 1
... "" ")
>>> Від tl.testing.doctest імпорту DocFileSuite
>>> Run (DocFileSuite (sample_txt, виноски = True))
-------------------------------------------------- --------------------
Ран 1 тест в N.NNNs
ОК
>>> Sample_txt = запису ('sample.txt "," ""
... .. Код-блок :: Python
... Х = 1
...
... >>> Х
... 1
... "" ")
>>> Імпорту manuel.codeblock
>>> Run (DocFileSuite (sample_txt, Мануель = manuel.codeblock.Manuel ()))
-------------------------------------------------- --------------------
Ран 1 тест в N.NNNs
OK
Вимоги
- Python
Коментар не знайдено