Python doctest.testmod () вызывается из других модулей, разрывает контрольные примеры с исключениями - PullRequest
0 голосов
/ 04 ноября 2019

У меня есть проект с несколькими .py файлами, каждый с doctest тестовым кодом. Некоторые функции вызывают исключения, которые также ставятся в тупик. Если я запускаю doctest.testmod() из модуля, чтобы протестировать себя, все работает нормально (см. xx.py тест ниже).

Но если я вызываю testmod(xx) из какого-то другого модуля (см. x2.py ниже),имя модуля добавляется к исключению, и контрольный пример не проходит.

Вот файлы. Это xx.py:

class MyException(Exception):
    pass

def f(a):
    """
    >>> f(0)
    Traceback (most recent call last):
      ...
    MyException
    """
    raise MyException

def main():    
    import doctest
    doctest.testmod()

if __name__ == "__main__":
    main()

И это x2.py:

import xx
import doctest
doctest.testmod(xx)

Это вывод при вызове x2.py:

**********************************************************************
File "C:\xx.py", line 6, in xx.f
Failed example:
    f(0)
Expected:
    Traceback (most recent call last):
      ...
    MyException
Got:
    Traceback (most recent call last):
      File "C:\Users\chris\Anaconda3\lib\doctest.py", line 1329, in __run
        compileflags, 1), test.globs)
      File "<doctest xx.f[0]>", line 1, in <module>
        f(0)
      File "C:\xx.py", line 11, in f
        raise MyException
    xx.MyException
**********************************************************************
1 items had failures:
   1 of   1 in xx.f
***Test Failed*** 1 failures.

Как заставить это работать, желательно приятным, питонским способом?

...