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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1409閲覧

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

nako01

総合スコア37

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2019/08/02 08:23

編集2019/08/02 08:24

Python

1views.py 2 3from django.utils import timezone 4from django.views import generic 5 6from apps.account.models import Account 7from apps.lesson.models import Lesson 8from .api import get_genre_data 9from .forms import SearchForm 10from .aggregator import Aggregator 11 12 13class BillingListView(generic.ListView): 14 model = Account 15 template_name = "billing/billing_list.html" 16 17 def create_account_lesson_log_list(self): 18 form = SearchForm(self.request.GET) 19 form.is_valid() 20 21 billing_yyyymm = form.cleaned_data['billing_yyyymm'] 22 23 if not billing_yyyymm: 24 billing_yyyymm = timezone.localdate() 25 26 27 lesson_log_list = Lesson.objects.filter(attending_date__year=billing_yyyymm.year, 28 attending_date__month=billing_yyyymm.month).select_related('account', 'genre') 29 30 genre_dict = get_genre_data() 31 aggregate = Aggregator() 32 billing_result_list = aggregate.get_monthly_billings(Account.objects.all(), lesson_log_list, genre_dict) 33 34 return billing_result_list 35 36 37 def get_context_data(self, **kwargs): 38 context = super().get_context_data(**kwargs) 39 context["form"] = SearchForm(self.request.GET) 40 41 42 context["aggregate_result"] = self.create_account_lesson_log_list() 43 44 return context 45

Python

1test_views.py 2 3from django.test import TestCase 4from django.utils import timezone 5from datetime import datetime 6from apps.lesson.tests.factory import GenreFactory, LessonFactory 7from django.urls import reverse 8from datetime import date 9 10 11class TestCreateAccountLessonLogList(TestCase): 12 def test1(self): 13 """ getで通常のアクセスが出来るか、尚且つ表示内容があっているか""" 14 response = self.client.get(reverse("billing:index")) 15 self.assertEqual(response.status_code, 200) 16 self.assertTemplateUsed(response, "billing/billing_list.html") 17 18 def test2(self): 19 """ 指定日付の時請求一覧が表示されるかのテスト""" 20 attending_date = date(2019, 8, 1) 21 english_lesson = GenreFactory(name="英語") 22 LessonFactory(genre=english_lesson, attending_date=attending_date) 23 24 response = self.client.post(reverse("billing:index"), data={"billing_yyyymm": "2019-8"}) 25 26 self.assertContains(response, "英語") 27 28

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

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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

HTTP ステータスコード 405 は

405 Method Not Allowed

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

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

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

投稿2019/08/02 08:41

tacsheaven

総合スコア13703

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nako01

2019/08/02 08:55

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問