質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.21%

Djangoテストコード  405 != 200 エラーがでて、200が返ってこない。テストコードの書き方が分からない。

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 784

nako01

score 11

views.py

from django.utils import timezone
from django.views import generic

from apps.account.models import Account
from apps.lesson.models import Lesson
from .api import get_genre_data
from .forms import SearchForm
from .aggregator import Aggregator


class BillingListView(generic.ListView):
    model = Account
    template_name = "billing/billing_list.html"

    def create_account_lesson_log_list(self):
        form = SearchForm(self.request.GET)
        form.is_valid()

        billing_yyyymm = form.cleaned_data['billing_yyyymm']

        if not billing_yyyymm:
            billing_yyyymm = timezone.localdate()


        lesson_log_list = Lesson.objects.filter(attending_date__year=billing_yyyymm.year,
                                                attending_date__month=billing_yyyymm.month).select_related('account', 'genre')

        genre_dict = get_genre_data()
        aggregate = Aggregator()
        billing_result_list = aggregate.get_monthly_billings(Account.objects.all(), lesson_log_list, genre_dict)

        return billing_result_list


    def get_context_data(self, **kwargs): 
        context = super().get_context_data(**kwargs)
        context["form"] = SearchForm(self.request.GET)


        context["aggregate_result"] = self.create_account_lesson_log_list()

        return context
test_views.py

from django.test import TestCase
from django.utils import timezone
from datetime import datetime
from apps.lesson.tests.factory import GenreFactory, LessonFactory
from django.urls import reverse
from datetime import date


class TestCreateAccountLessonLogList(TestCase):
    def test1(self):
        """ getで通常のアクセスが出来るか、尚且つ表示内容があっているか"""
        response = self.client.get(reverse("billing:index"))
        self.assertEqual(response.status_code, 200)
        self.assertTemplateUsed(response, "billing/billing_list.html")

    def test2(self):
        """ 指定日付の時請求一覧が表示されるかのテスト"""
        attending_date = date(2019, 8, 1)
        english_lesson = GenreFactory(name="英語")
        LessonFactory(genre=english_lesson, attending_date=attending_date)

        response = self.client.post(reverse("billing:index"), data={"billing_yyyymm": "2019-8"})

        self.assertContains(response, "英語")

エラー: 405 != 200 : Couldn't retrieve content: Response code was 405 (expected 200)

テストを実行すると、405が返ってきて200が返ってきません。
あと、テストコードの書き方がいまいちわかりません。。。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

HTTP ステータスコード 405 は

405 Method Not Allowed

です。
つまり、アクセス方法が正しくない(POST しなければならないのに GET を使ったなど)
のでエラーになっているのですから、

  1. テストの試験項目が間違っている(POST を使用しなければならない)
  2. サーバー側の挙動が間違っている(GET を受け付けねばならない)

のどっちかの理由なのでは?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/08/02 17:55

    template でgetにしてました!!!
    getにしたら出来ました!!ありがとうございます!

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.21%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • トップ
  • Pythonに関する質問
  • Djangoテストコード  405 != 200 エラーがでて、200が返ってこない。テストコードの書き方が分からない。