Pythonを使ったAPIサーバー開発を始める際に整備したCIとテスト機構

By Kazuki Higashiguchi

Elevator Pitch

普段Pythonを常用していないアプリケーションエンジニアが、Pythonを使ったAPIサーバーの開発を行う際に行った”始め方”について紹介します。具体的にはCIでのコード検査とユニットテストです。CIについては、pycodestyle・pydocstyle等を使ったスタイルチェックやエラー解析をCircleCIを用いて自動でチェックする事例を紹介します。ユニットテストについては、実データベースを利用するユニットテストや、aiohttpでHTTPサーバーのテストを行うために準備したテスト機構を紹介します。業務でPythonを使い始めようとする方が開発準備する際に参考にしていただきたいです。

Description

このトークでは、私自身がPythonを業務で活用しはじめた際に準備しておいてよかったという経験について話すものです。具体的には、CIとユニットテスト機構の準備について紹介します。

CIについて

CI(継続的インテグレーション)にて、自身が書いたコードがPythonの標準から外れていないか・問題がないかを検査しておくことは非常に有用です。CIが指摘する項目を修正することでコードの品質を保てることに加えて、Pythonを学習することができます。 具体的には次のようなツール・ライブラリを使ったコード検査を紹介します。

  • pycodestyle
  • pydocstyle
  • pyflakes
  • mccabe

テスト機構について

ユニットテストを書くことは、特に不慣れな言語を扱う場合にとても有効です。無意識に発生してしまう欠陥コードの混入を排除できるといった品質面のメリットもありますが、ユニットテストがあることによるリファクタリングの容易さが大きなメリットです。業務で使うことによって日々レベルアップするPythonの知識を、スピーディにリファクタリングすることでプロダクションコードに反映することができます。 具体的には、次の点について紹介します。

  • pytestを利用する
  • 実データベースを利用するコードをテストする機構を用意する
  • aiohttpを用いる場合のHTTP Handlerのテストの仕方
  • APIクライアントをテストするためのライブラリ
  • データベース・外部APIを使うクラスに依存しないためのコード設計