Я хотел бы иметь несколько doctests в тестовых данных и/или функциях общего доступа к файлам. Есть ли способ сделать это, не находя их во внешнем файле или в коде тестируемого файла?
Обновить
"""This is the docstring for the module ``fish``.
I've discovered that I can access the module under test
from within the doctest, and make changes to it, eg
>>> import fish
>>> fish.data = {1: 'red', 2: 'blue'}
"""
def jef():
"""
Modifications made to the module will persist across subsequent tests:
>>> import fish
>>> fish.data[1]
'red'
"""
pass
def seuss():
"""
Although the doctest documentation claims that
"each time doctest finds a docstring to test,
it uses a shallow copy of M‘s globals",
modifications made to the module by a doctest
are not imported into the context of subsequent docstrings:
>>> data
Traceback (most recent call last):
...
NameError: name 'data' is not defined
"""
pass
Итак, я предполагаю, что doctest
копирует модуль один раз, а затем копирует копию для каждой строки документации?
В любом случае импорт модуля в каждую строку документации кажется полезным, хотя и неудобным.
Я бы предпочел использовать для этого отдельное пространство имен, чтобы избежать случайного нарушения фактических данных модуля, которые будут или не будут импортированы в последующие тесты, возможно, недокументированным образом.
Мне пришло в голову, что (теоретически) возможно динамически создать модуль, чтобы содержать это пространство имен. Однако пока я не получил никаких указаний о том, как это сделать, из вопроса, который я задал об этом Некоторое время назад. Любая информация приветствуется! (как ответ на соответствующий вопрос)
В любом случае я бы предпочел, чтобы изменения распространялись непосредственно в пространство имен последующих строк документации. Итак, мой первоначальный вопрос остается в силе, с этим в качестве определителя.