PyCon JP 2024

名前空間について考える(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するのか?
等について公式ドキュメントをベースに説明します。


Why did you choose this topic?

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

Knowledges and know-how the audience can get from your talk

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

Prior knowledges speakers assume the audience to have

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

Audience experiment

Intermediate

Language of presentation

日本語

Language of presentation material

日本語

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

Python Djangoプログラマー