2012-04-09 8 views
10

Я пытаюсь пройти тестирование на python с помощью модуля doctest. На данный момент я делаюPython: Можно ли тестировать только определенные функции с помощью doctest в модуле?

  1. Запишите тесты для функций.
  2. реализовать код функции.
  3. Если тесты проходят, напишите больше тестов и больше кода.
  4. Когда функция выполнена, перейдите к следующей функции для реализации.

Так что после 3 или 4 (независимых) функций в одном модуле со многими тестами я получаю огромный вывод от doctest. И это немного раздражает.

Есть ли способ сказать doctest «не испытывают функции a(), b() и c()», так что он работает только немаркированных функции?

Я нашел только флаг doctest.SKIP, которого недостаточно для моих нужд. Мне нужно было бы разместить этот флаг во многих строках. И если бы я захотел снова проверить с пометкой, мне пришлось бы перейти вручную через код и удалить любой флаг, который я установил внутри ...

Надеюсь, вы понимаете, что я имею в виду ... :-)

Любые предложения?

+0

Doctest не плохо для быстрого и грязного тестирования, но я настоятельно рекомендую изучить более сложную библиотеку тестирования. На самом деле Python встроен в модуль 'unittest'. (http://docs.python.org/library/unittest.html) – Wilduck

+0

@Wildluck: Я знаю о pythons 'unittest', спасибо. Но все, что мне нужно сейчас, - это быстрое и грязное тестирование *. :-) – Aufwind

ответ

13

looks like можно передать функцию run_docstring_examples:

def f(a, b, c): 
    ''' 
    >>> f(1,2,3) 
    42 
    ''' 

if __name__ == '__main__': 
    import doctest 
# doctest.testmod() 
    doctest.run_docstring_examples(f, globals()) 

example найти через Google.

+1

сделал это не работает? –

+0

Это действительно сработало, спасибо. Извините за то, что ответили так поздно! Я скучаю по лету 'doctest.testmod (verbose = True)', где он сообщает вам что-то вроде * 18 прошло и 0 не удалось * и тому подобное. Кроме того, это то, что я искал. :-) – Aufwind

+0

А как сделать это из repl и без изменения исходного файла? – Chris