ファイル内のいくつかの doctest でテスト データや関数を共有したいと考えています。それらを外部ファイルまたはテスト対象のファイルのコード内に配置せずにこれを行う方法はありますか?
アップデート
"""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
、モジュールを一度コピーしてから、各docstringのコピーをコピーすると思いますか?
いずれにせよ、モジュールを各 docstring にインポートすることは、面倒ではありますが、使用できるようです。
ドキュメント化されていない可能性のある方法で後続のテストにインポートされる、またはインポートされない実際のモジュール データを誤って踏みにじるのを避けるために、これには別の名前空間を使用することをお勧めします。
この名前空間を含めるために、モジュールを動的に作成することが (理論的には) 可能であることがわかりました。しかし、しばらく前に尋ねた質問から、それを行う方法についての指示はまだ得られていません。どんな情報でも大歓迎です!(適切な質問への回答として)
いずれにせよ、変更を後続のドキュメント文字列の名前空間に直接反映させたいと思います。したがって、私の最初の質問は依然として有効であり、それを修飾子として使用しています。