pythonその3 ユニットテスト
pythonでユニットテスト。unittestという機能が標準で入ってるらしい。しかし、importとfrom x import yはどういう順序で書くのだろう?とりあえずcのincludeと同じと考えて、以下で書いてみる。 ユニットテストをこさえた時点でこんな感じになった。 calc_test.py 自作のCalcクラスのadd()は、引数としてxとyを取る。xとyは整数型を期待してるんだけど、検証は全くやってないんで、引数を検証する処理を追加して、テストケースを追加で書いたのが以下。 引数チェック追加 データ型の変換については 細かすぎて伝わりにくい、Pythonの本当の落とし穴10選(私の小岩ホッチキス)、例外のテストのやり方はPython – unittestのassertRaisesの使い方(ぼっち勉強会)を参考にさせていただきました。 さらに追加テスト。個々の値の検証はできたとして、最大値+1したらどうなるか、int型として超えちゃうから実行時例外が発生するかなと思ったけど、できちゃった…返り値のデータ型がintじゃなくてlongで帰ったんだろうか? 実行結果。
pythonその2
def add(x,y)はダメ。以下のエラーが。。。 typeError: add() takes exactly 2 arguments (3 given) def add(self, x, y)ならオッケー。selfが必須なのか?!ネットで調べると、確かにそんなこと書いてある。そして他言語から来た人にはキモいとも書かれている… calc.py ネットで例を見てたら、selfを書いていないのもある。どっちが本当?と思って試してたらclassのメソッドはselfが必要だけど、ただのメソッドなら要らないみたいで、以下はオッケーだった。 別のファイルからクラスをnewしてメソッドを呼び出すというのもやってみた。from ファイル名 import クラス名と書くらしい。unit testはまた今度。
python
rubyできればいいかなと思ってたけど、そんなにrubyも究めることもないだろうし、pythonもやってみようと思った。ということで、githubにお勉強用のリポジトリをこさえた。assemblaに置いてたコードもgithubにまとめようかなー。 昔触った事はあるはずだが、class定義して呼び出すだけで悪戦苦闘… メソッドの後ろに”():”が必要だったり、引数なしの場合でも”()”じゃなくて”(self)”としないと、自分の作ったexecute()メソッドがこんなエラーになったり。前途多難ですな。 TypeError: execute() takes no arguments (1 given)