簡易版でお送りします。タイトルが全てです!
Python 3.11をサポートした新バージョンをリリースしています。
目次
- 目次
- 前回のSpeechRecognition
- Python 3.11はサポートしないの?というissue
- モックを使ったテストコードに変更していく
- 終わりに
- P.S.リリースにあたり参照したエントリメモ
前回のSpeechRecognition
音声認識ツールキットライブラリのメンテナをしています(なかなか時間を作れていませんが🙏)
Python 3.11はサポートしないの?というissue
それは突然やってきました。
「GitHub Actionsで流しているテストにPython 3.11での実行も加えて通るか確認すればいいよな」とやる気になったnikkie氏。
3.11も追加して流してみると...
テスト失敗🙀
原因は、Googleの音声認識APIの返り値の変化でした(モデルが変わったのかな?)
モックを使ったテストコードに変更していく
既存のテストコードは、外部の音声認識APIを呼び出しています。
今回は外部のAPIの返り値が変わったために、期待値と一致せずにテストが失敗しました。
ここはモックの使い所だと思うので、導入していきました。
外部APIとの通信をテストコードではモックに置き換えることで、外部のAPIの変更でテストが落ちることはなくなります。
PyCon APAC 2023でもお話ししました。
モックを当てる上でやや難易度が高かったのは、既存実装が長大な関数だったこと。
モックを使ったテストがなかったので、まずはテストを書きます(テストも長くなります)。
その後リファクタリングとして、処理を分割していきました。
1と3はそれぞれ担当するクラスを定義し、クラスの小さなメソッドを組み合わせる形で実装しました。
最終的に小さいテストが何個もある状態に分割できました。
終わりに
結果として、3.11対応というよりは、外部APIの変更でテストが落ちないようにするのに時間を使いました。
新しいバージョンのSpeechRecognitionをお楽しみください!
今回対応したような小さなissueを他にも見つけており、引き続きコードで価値を届けていく所存です。
スターやスポンサーで支えていただけるととっても嬉しいです!
P.S.リリースにあたり参照したエントリメモ
buildとtwineの使い方