Тестирование

много теории без питона тут

Модульное тестирование в Python

doctest: тест = диалог с python-интерпретатором

  1. Модуль
       1 def moo(oos=2, end=""):
       2     '''Издать мычание длиной oos с end в конце'''
       3     return "M"+"o"*oos+end
    
  2. Тестируем вручную:
       1 george@inspiron:~/src/moo> python3 -i Moo.py
       2 >>> moo()
       3 'Moo'
       4 >>> moo(4)
       5 'Moooo'
       6 >>> moo(0)
       7 'M'
       8 >>> moo(end='!')
       9 'Moo!'
      10 >>> moo(0,'?')
      11 'M?'
    
  3. Добавляем тесты в docstring:
    def moo(oos=2, end=""):
        '''Издать мычание длиной oos с end в конце
        Оба параметра необязательны:
    >>> moo()
    'Moo'
    
        Первый задаёт количество букв 'o' в слове 'Moo'
    >>> moo(4)
    'Mooooo'
    
        Букв 'o' может и не быть
    >>> moo(0)
    'M'
    
        Второй задаёт символ после всех 'o'
        (по умолчанию — ничего)
    >>> moo(end='!')
    'Moo!'
    >>> moo(0,'?')
    'M?'
    
        '''
        return "M"+"o"*oos+end
  4. Тестирование:
    george@inspiron:~/src/moo> python3 -m doctest Moo.py
    **********************************************************************
    File "/home/george/src/moo/Moo.py", line 13, in Moo.moo
    Failed example:
        moo(4)
    Expected:
        'Mooooo'
    Got:
        'Moooo'
    **********************************************************************
    1 items had failures:
       1 of   5 in Moo.moo
    ***Test Failed*** 1 failures.
  5. Отчёт (с успешными тестами):
    george@inspiron:~/src/moo> python3 -m doctest -v Moo.py
    Trying:
        moo()
    Expecting:
        'Moo'
    ok
    Trying:
        moo(4)
    Expecting:
        'Mooooo'
    **********************************************************************
    File "/home/george/src/moo/Moo.py", line 13, in Moo.moo
    Failed example:
        moo(4)
    Expected:
        'Mooooo'
    Got:
        'Moooo'
    Trying:
        moo(0)
    Expecting:
        'M'
    ok
    Trying:
        moo(end='!')
    Expecting:
        'Moo!'
    ok
    Trying:
        moo(0,'?')
    Expecting:
        'M?'
    ok
    1 items had no tests:
        Moo
    **********************************************************************
    1 items had failures:
       1 of   5 in Moo.moo
    5 tests in 2 items.
    4 passed and 1 failed.
    ***Test Failed*** 1 failures.

TODO

TODO pytest/cov

Д/З