PyCon JP 2024

Your locale preferences have been saved. We like to think that we have excellent support for English in pretalx, but if you encounter issues or errors, please contact us!

名前空間について考える(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プログラマー