PyCon APAC 2023

好きとか嫌いとかはいい、練習してテストを書けるようになるんだ
2023-10-27 , track 5

※本発表は、日本語資料(Japanese slide)・ English talk です


「テストは不安を退屈に変える賢者の石だ」(ケント・ベック『テスト駆動開発』)

これはその通りで私はテストコードが書けるようになったことで、大きくPythonの力がついたと感じています。
過去の私はテストが書けず、自分の書いたコードを変更するたびに「どこか壊しているんじゃないか」という不安に苛まれ、「壊れていませんように」と祈ってきました。
それがテストコードがあると、祈る必要がなくなるのです!

自転車に乗れるようになるのと同様で、誰しも最初はテストコードを思うようには書けません。
このトークをきっかけにテストを practice, practice, practice!!!


今年のPyCon JPは「Python 初心者」がキーワードの1つのように思います。
Python初心者に対して、初心者時代の私に一番オススメしたい知見「テストを書こう」を共有します。

初心者時代の私はPythonの関数やクラスを後から変更しやすく書くことができませんでした(今でも少し前のコードをみると伸びしろしかないなと感じます)。
めちゃめちゃ達人のように思える開発者(冒頭で引いたケント・ベック)でも、一発で要件に合致する変更しやすいコードは書けないようです。
なので、一発で書くという幻想は捨てて、ちょっとずつ修正していくというアプローチに切り替えました。

ここで有用なのがテストコードです。
テストコードがない場合、変更した後は手動で振る舞いが変わっていないか確認しないといけません。
何度も手動で確認するのは大変ですが、テストコードがこれを解決してくれます。
実体験から、振る舞いを変えずに既存のコードを変えていく(例:新しく知った文法知識を練習してみる)ことで、Pythonの力が伸びると思います。

このトークをきっかけにテストを書けるようになり、Pythonの力がぐんぐん伸びて、ライブラリを公開してみようと挑戦される方がいらっしゃったらこんなにうれしいことはありません。

以下が構成です。

  • 自己紹介 1分
  • なぜテストコードが書けるといいのか 3分
  • doctest 7分
  • 基本的な使い方
  • tips: reprの一致
  • unittest 9分
  • pytestと同じ内容をunittestで紹介します
  • pytest 9分
  • 基本的な使い方
  • parametrized test
  • モック
  • まとめ1分

にっきーです

Nikkie began his career as a software engineer in 2016.
He started Python as a hobby in 2017 and fell in love with it.
He is engaged in Natural Language Processing as a data scientist at Uzabase, inc. Tokyo, Japan from 2019.

He is working on the Python community in Japan as a staff of the following event:

He gave talks at many PyCons in Japan and abroad.

He loves anime (Japanese animetation) as much as Python, and implements ideas related to some anime with Python.