PyCon JP 2024

ロケール設定が保存されました。pretalxでは英語のサポートが充実していると思っていますが、問題やエラーが発生した場合は、ぜひご連絡ください。

名前空間について考える(unittest の patchを正しく使うために)
2024/09/27 , 4F Track3

unittestで使われるpatchを正しくつかうために必要な、名前空間の概念について理解を深めます


Pythonの公式ドキュメントのpatchの説明の冒頭に次のように書かれています。

注釈 重要なのは正しい名前空間に対して patch することです。 where to patch セクションを参照してください。

そして「どこにpatchするか」というセクションには次のような説明があります。

基本的な原則は、オブジェクトが ルックアップ されるところにパッチすることです。その場所はオブジェクトが定義されたところとは限りません。

これを理解するためにはpythonの名前空間、スコープといった概念を理解する必要があります。
- 名前空間とスコープ
- import 文の働き
- import foo と from foo import barの違い
- どこにpatchするのか?
等について公式ドキュメントをベースに説明します。


この題材を選んだ理由やきっかけ

その昔、unittestの中でpatchを使ったのだが、同僚から、使い方が間違っているという指摘を受けた。
公式ドキュメントの patch のセクションの where to patchを読んだが理解できなかった。名前空間に対する理解が無かったからだ。同様の困難を再生産しないように、名前空間について説明したい。

オーディエンスが持って帰れる具体的な知識やノウハウ

patchの正しい使い方
名前空間の理解
import foo と from foo import bar の違い
Where to patchの理解

オーディエンスに求める前提知識

python の unittest で patch を使ったことがある。使い方で悩んだことがある。

オーディエンスの経験レベル

Intermediate

発表の言語

日本語

発表資料の言語

日本語

See also: 発表スライド (2.7 MB)

Python Djangoプログラマー