This page is intended for users in Japan(English). Go to the page for users in United States.

森田ドラゴンのインターンシップ ~26日目~ コード < 解説文

こんにちは、高知からリモートインターンしている森田ドラゴンです。前回はXMLをJSONにパースする方法を調べました。今日は、テストとコードの解説文を作るために、pydocとpytestを触りました。pytestはpythonのテストフレームワークの一つで、pydocはソースコードに直接関数の仕様を書き込んで、他のファイルに出力する、ドキュメント生成ツールです。

pytest / ローカルファイルがimportできない

pytestはとりあえず写経をして、動くかどうか試しました。チュートリアル通りに書きましたが、一つだけ" main というモジュールは存在しません " と、エラーがでました。解決策を調べると、”パスが通っていないから” ”__init__.pyファイルが定義されていないから” とありました。
上の二つの解決策を試しましたが、動作しませんでした。

from main.calc import Calc

上記のコードは、 main フォルダ ( 正確にはmain モジュール )の calcの中の Calcクラスをimportする。というコードです。 今考えると、階層が下記のようになっていたので、 ../main.calc と書けばよかったのかもしれません。このエラーは同じ階層にテストコードとソースコードを書くことで、解決しました。

study_pytest/
|- main/calc.py
|-tests/test_calc.py

pydoc / コードにそのまま書き込む

pydocは「コードにそのまま説明を書き込む」という話を聞いていました。それに対して、「ソースコード長くなりそうだけど、どうやるんだろう」と疑問を持っていました。

結論からいうと、そのままソースコードに書くだけでした。

        """
足し算をおこなう
parameters
------
self : int
内部引数 a
b

配列の場合はlist of int
return
-------
a と bを足した数を返す
"""

上記は例ですが、""" 3つのダブルクォーテンションで囲み、関数の仕様を書き込みます。コードが長くなるように感じましたが、後からリファクタリングすることや、他の人が見ることを考えると、逆にこちらのほうがみやすいみたいです。

仕様の書き方は自由ですが、今回は Parameter と Returnを定義して、仕様を書くことにしました。

感想

pydoc と pytestの使い方がなんとなくわかったので、最後の方は開発をしていました。とりあえず関数を一つ作ろうとして、 urllibライブラリの仕様と、try catch でのエラーの対応に時間がかかっています。urllibは使うだけなので、調べればでそうですが、try catch はエラーの内容を把握する必要があるので、試しながら進む必要がありそうです。

株式会社サーバーワークス's job postings

Weekly ranking

Show other rankings
If this story triggered your interest, go ahead and visit them to learn more