djangoで最も基本的なFormsのテストコードを作成し実行する

djangoで作ったwebアプリケーションのFormsのテストコードを作成する方法を紹介していきます。

djangoのテストコードはそこら辺の本屋で販売している初学者向けのdjango教材本には書いていません。

なぜならテストコードを作成しなくてもwebは動くからです!!

ではなぜテストコードを作成するのか?

テストコードを作成しないと積み重なったバグが大きなトラブルを引き起こしたり、それに対して多大なる時間を取られたりとテストコードを作成しておいて損はありません。

今回はそんな数多(あまた)の理由からdjangoでFormsのテストコードを作成する方法を紹介していきます。

環境

環境

・python 3.8

・django 2.2

テストコードを作成する理由

「わざわざ時間をかけてテストコードを書くくらいなら、その時間をwebの高機能化やUIUXを良くして魅せた方がいいじゃん!!」

そんなふうに考えていた時期が、俺にもありました。

しかし、見栄えも良くしたり高機能にしたりしても、動かなければ全てが台無しなのです!!

仮にテストコードを書かないでリリースして、どんどん新しい追加実装をしていき、ユーザーからの指摘で動かないことに気づいたときにはもう遅いです!!

ユーザーは二度と戻ってきてくれません!!

テストを作成する理由

・テストコードを書くことで時間を節約する

・問題が発生するのを未然に防ぐことができる

・あらゆる想定の範囲内・範囲外の値を与えて確認することができる

テストコードを書く際の注意点

システム開発でのテストというと「テスト駆動開発(TDD)」とググるとたくさん出てきますが、わかり易く書くには以下の注意点に注意して書いて行けば問題ありません。

テストコードを書く際の注意点
  1. テストは分かりやすく、見やすく
  2. 全てのページに対してのassertEqualを当てる
  3. ループ処理はテストコード中でなるべく使用しない
  4. 常に値が想定したものになっているかを確認するテストを書く
  5. 先に失敗するパターンを書く

ちょっとまだよくわからないって人は書いていくうちに理解できるようになりますので焦らず。

3.のループ処理に関しては仮にテストで書いたループ処理が抜け出せなくなったり、ループがネストして複雑になりすぎて分からなくなってしまうのが大きな理由です。

5.の「先に失敗するパターンを書く」は、これはviewsにも言えることですが、きちんと動くコードの方が短いので失敗するパターンをしらみ潰しに書く、というのが理由です。

djangoでFormsのテストを作成する方法

前置きが長くなりましたが、今回の記事のタイトルでもある「djangoでFormsのテストを作成する方法」を早速紹介したいと思います。

想定されるケース

今回は問い合わせフォームを想定して書いていきます。

例えばこんな問い合わせフォームを用意しておきます。

書いたfroms.pyの中身は以下のようにしました。

forms.py

ごく一般的な問い合わせフォームになります。

テストコード

tests.pyに書くコードを以下に紹介します。

今回はテストを3つ作成しました。

tests.py

2行目… formsのInquiryAddFormを使用できるようにファイル指定をします。

8-18行目はコメントアウトにもある通り、正しい入力データを与えた時のそれに対する真の確認になります。

20-31行目はコメントアウトにもある通り、不正なメールアドレスの 「sample@@@example.com」 という@マークが連なった正しくない入力データを与えたときのそれに対するテストコードになります。

29行目のself.assertEqualにある、[‘有効なメールアドレスを入力してください。’]は実際に入力フォームに入力したときに出現する.errorlistのエラーメッセージを表しています。

33-44行目はコメントアウトにもある通り、メッセージ文字数が多すぎたときのエラーの確認をしています。

forms.pyの36行目に max_length=1024 とあるように、入力できる範囲は1024バイトまでになりますが、ここでは’i’*1025と1025バイトを与えています。

テストを実行する

準備ができたので実際にテストコードを実行します。

ディレクトリは以下のようになっています。

manage.pyにいるディレクトリで以下のコマンドを実行します。

sampleがアプリ名で、testsがtests.pyを、InquiryAddFormTestsがクラス名を指します。

実行結果は以下になります。

OKが出力されたので、テストコードの期待通りになりました。

最後に

いかがでしたでしょうか。

以上が、「djangoで最も基本的なFormsのテストコードを作成し実行する」の紹介記事になります。

こちらの記事を参考にぜひあなたのwebにもテストコードを書いて行ってみてください。

プログラミング学習を効率良く進めるには…

私ヒロヤンがプログラミングを始めた頃は以下のような感じでした。

何から手をつけていいのか、わからない。

プログラミングを始めてみたけど、エラーが解決できない。

そしてネットで調べていくうちに膨大な時間が過ぎていきました。

私ヒロヤンの実体験より、プログラミングを効率的に学ぶために大切なことは以下のことだと考えています。

1. いつまでもダラダラとやらないで、目標を決定して短期集中する

2. マンツーマンで、わからない箇所は直ぐに質問をして即レスをもらう

.proでは私ヒロヤンが学習してきたプログラミング経験0からのpython/django、その他webサイト・サービス開発のコースが用意されています。

カウンセリング自体は無料なので話を聞いてみるだけでもいかがでしょうか?

また以下のリンク先ではdjango専用のプログラミングスクールをまとめ紹介しています。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です