みなさんDjangoでテストコードは書いていますか?
「テストコードを書かないことこそがバグだ。」というくらい格言があるくらいに、テストコードを書くことは重要で、私自身、自分が書いたテストコードに命を救われたことが何度もありました。
そんなDjangoでテストコードを書いたはものの、全く動かない!!というような経験はないでしょうか?
本日はそんな「【Django】Testが実行されない時に考えること」を紹介します。
コンテンツ
環境
OS:Mac
python:3.8
Django:3.2
読み込まれない事例
Djangoでプロジェクトを作成して、その配下にutilsというディレクトリを作成しました。
アプリを複数作成していたので、複数のアプリで使用できる関すをutilsに書いていました。
しかしながら「ユニットテスト」は動くものの、「全てのテストを実行」では動きませんでした。
ユニットテストを実行する。
1 |
% python manage.py test utils.tests.TestSample |
全てのテストを実行する。
1 |
% python manage.py test |
読み込まれない時に考える4つのこと
テストが読み込まれない時に考えることとして、次の4つがあげられますので順に説明をしていきます。
テストモジュールと同じディレクトリに__init__.pyが存在すること
1 2 3 4 |
── utils ├── __init__.py ├── tests.py └── utils.py |
アプリ作成コマンド( % python manage.py startapp sample_apps)を使わずに、自身でディレクトリを作成した場合は、当然__init__.pyファイルも作成されないので、自分で__init__.pyファイルを作成しましょう。(アプリ作成コマンドで作成した場合は、作成されます。)
__init__.py については、こちらの記事を参考にしてください。
__init__.pyファイルが抜けているとテストが読み込まれません。
単体テストの場合は実行されますが、全体テストが実行されない時に考えるのはまずこの__init__.pyになります。
テストファイル名はtestで始まっていること
今回の事例では、utils/test.py としていますが、test_sample.pyとか、test_models.pyとか、test_〇〇.pyのように書いて、必ずファイルの先頭にtestとつけましょう。
Djangoの標準のテストランナーは、名前がtestで始まるファイル名を検索し実行に移ります。
テストクラスを継承していること
TestCaseを継承していることを確認しましょう。
こんな感じです。
test.py
1 2 3 4 5 6 |
from django.test import TestCase class TestsSample(TestCase): - - - |
テストメソッド名はtest_で始まっていること
テストクラスを継承したことが確認できたら、テストメソッドもtest_で始まっているかを確認しましょう。
こんな感じです。
test.py
1 2 3 4 5 6 |
from django.test import TestCase class TestsSample(TestCase): def test_sample(self): - - |
以上。
最後に
いかがでしたでしょうか。
以上が「【Django】Testが実行されない時に考えること」の紹介記事になります。
テストコードが読み込まれない際はこちらの記事を参考にしてください。
プログラミング学習を効率良く進めるには…
私ヒロヤンがプログラミングを始めた頃は以下のような感じでした。
そしてネットで調べていくうちに膨大な時間が過ぎていきました。
私ヒロヤンの実体験より、プログラミングを効率的に学ぶために大切なことは以下のことだと考えています。
1. いつまでもダラダラとやらないで、目標を決定して短期集中する2. マンツーマンで、わからない箇所は直ぐに質問をして即レスをもらう
.proでは私ヒロヤンが学習してきたプログラミング経験0からのpython/django、その他webサイト・サービス開発のコースが用意されています。
カウンセリング自体は無料なので話を聞いてみるだけでもいかがでしょうか?
また以下のリンク先ではdjangoを教えてくれるスクールをまとめ紹介しています。
コメントを残す