質問編集履歴
6
本文修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -30,15 +30,6 @@
|
|
30
30
|
class TestDiaryUpdateView(LoggedInTestCase):
|
31
31
|
"""DiaryUpdateView用のテストクラス"""
|
32
32
|
|
33
|
-
def _make_dummy_image(self):
|
34
|
-
"""テスト用の画像ファイルをPILで作成"""
|
35
|
-
file_obj = io.BytesIO()
|
36
|
-
im = Image.new('RGBA', size=(10, 10), color=(256, 0, 0))
|
37
|
-
im.save(file_obj, 'png')
|
38
|
-
file_obj.name = 'test.png'
|
39
|
-
file_obj.seek(0)
|
40
|
-
return file_obj
|
41
|
-
|
42
33
|
def test_update_diary_success(self):
|
43
34
|
"""日記編集処理が成功することを検証する"""
|
44
35
|
|
@@ -50,9 +41,6 @@
|
|
50
41
|
user=self.test_user,
|
51
42
|
title='タイトル編集前',
|
52
43
|
content='本文',
|
53
|
-
photo1=SimpleUploadedFile(img.name, img.read(), content_type='image/png'),
|
54
|
-
photo2='',
|
55
|
-
photo3='',
|
56
44
|
lat= 35.709,
|
57
45
|
lon= 139.7319
|
58
46
|
)
|
@@ -80,7 +68,7 @@
|
|
80
68
|
user = models.ForeignKey('accounts.CustomUser', verbose_name='ユーザー', related_name='user', on_delete=models.PROTECT)
|
81
69
|
title = models.CharField(verbose_name='タイトル', max_length=2200, blank=True, null=True)
|
82
70
|
content = models.TextField(verbose_name='本文', max_length=2200, blank=True, null=True)
|
83
|
-
photo1 = models.ImageField(verbose_name='写真1', blank=
|
71
|
+
photo1 = models.ImageField(verbose_name='写真1', blank=True, null=True)
|
84
72
|
photo2 = models.ImageField(verbose_name='写真2', blank=True, null=True)
|
85
73
|
photo3 = models.ImageField(verbose_name='写真3', blank=True, null=True)
|
86
74
|
created_at = models.DateTimeField(verbose_name='作成日時', auto_now_add=True)
|
5
コード修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -80,7 +80,7 @@
|
|
80
80
|
user = models.ForeignKey('accounts.CustomUser', verbose_name='ユーザー', related_name='user', on_delete=models.PROTECT)
|
81
81
|
title = models.CharField(verbose_name='タイトル', max_length=2200, blank=True, null=True)
|
82
82
|
content = models.TextField(verbose_name='本文', max_length=2200, blank=True, null=True)
|
83
|
-
photo1 = models.ImageField(verbose_name='写真1', blank=
|
83
|
+
photo1 = models.ImageField(verbose_name='写真1', blank=false, null=false)
|
84
84
|
photo2 = models.ImageField(verbose_name='写真2', blank=True, null=True)
|
85
85
|
photo3 = models.ImageField(verbose_name='写真3', blank=True, null=True)
|
86
86
|
created_at = models.DateTimeField(verbose_name='作成日時', auto_now_add=True)
|
4
ソースコード変更
test
CHANGED
File without changes
|
test
CHANGED
@@ -80,7 +80,7 @@
|
|
80
80
|
user = models.ForeignKey('accounts.CustomUser', verbose_name='ユーザー', related_name='user', on_delete=models.PROTECT)
|
81
81
|
title = models.CharField(verbose_name='タイトル', max_length=2200, blank=True, null=True)
|
82
82
|
content = models.TextField(verbose_name='本文', max_length=2200, blank=True, null=True)
|
83
|
-
photo1 = models.ImageField(verbose_name='写真1', blank=
|
83
|
+
photo1 = models.ImageField(verbose_name='写真1', blank=True, null=True)
|
84
84
|
photo2 = models.ImageField(verbose_name='写真2', blank=True, null=True)
|
85
85
|
photo3 = models.ImageField(verbose_name='写真3', blank=True, null=True)
|
86
86
|
created_at = models.DateTimeField(verbose_name='作成日時', auto_now_add=True)
|
3
本文修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -18,14 +18,11 @@
|
|
18
18
|
日記編集処理が成功することを検証する
|
19
19
|
----------------------------------------------------------------------
|
20
20
|
Traceback (most recent call last):
|
21
|
-
File "/usr/src/app/nyapu/diary/tests/test_views.py", line 1
|
21
|
+
File "/usr/src/app/nyapu/diary/tests/test_views.py", line 131, in test_update_diary_success
|
22
|
-
self.assert
|
22
|
+
self.assertEqual(Diary.objects.filter(title='タイトル編集後').count(), 1)
|
23
|
-
File "/usr/local/lib/python3.7/site-packages/django/test/testcases.py", line 360, in assertRedirects
|
24
|
-
|
23
|
+
AssertionError: 0 != 1
|
25
|
-
AssertionError: 200 != 302 : Response didn't redirect as expected: Response code was 200 (expected 302)
|
26
24
|
|
27
25
|
----------------------------------------------------------------------
|
28
|
-
?
|
29
26
|
```
|
30
27
|
|
31
28
|
### 該当のソースコード
|
@@ -70,7 +67,8 @@
|
|
70
67
|
response = self.client.post(reverse_lazy('diary:diary_update', kwargs={'pk': diary.pk}), params)
|
71
68
|
|
72
69
|
# 日記詳細ページへのリダイレクトを検証
|
73
|
-
self.assertRedirects(response, reverse_lazy('diary:diary_detail', kwargs={'pk': diary.pk}))
|
70
|
+
#self.assertRedirects(response, reverse_lazy('diary:diary_detail', kwargs={'pk': diary.pk}))
|
71
|
+
self.assertEqual(response.status_code, 200)
|
74
72
|
|
75
73
|
# 日記データが編集されたかを検証
|
76
74
|
self.assertEqual(Diary.objects.filter(title='タイトル編集後').count(), 1)
|
2
本文修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,31 +1,37 @@
|
|
1
1
|
### 前提
|
2
2
|
djangoで日記アプリを作成しています。
|
3
3
|
ユニットテストを実施しており、日記の編集処理をテストしているのですが、
|
4
|
-
日記編集処理(Post)を実行後しても、編集がかか
|
4
|
+
日記編集処理(Post)を実行後しても、編集がかからず困っています。
|
5
5
|
|
6
|
-
実際に手で動かしたときは編集できて
|
6
|
+
実際に手で動かしたときは編集できています。
|
7
7
|
|
8
8
|
また、日記の作成処理と編集処理は同じフォームを使いまわしていますが、
|
9
9
|
編集処理のみエラーが出ている状態です。
|
10
10
|
|
11
|
+
お力添えいただけますと幸いです。
|
11
12
|
|
12
13
|
### 発生している問題・エラーメッセージ
|
13
14
|
|
14
15
|
```
|
16
|
+
======================================================================
|
17
|
+
FAIL: test_update_diary_success (diary.tests.test_views.TestDiaryUpdateView)
|
18
|
+
日記編集処理が成功することを検証する
|
19
|
+
----------------------------------------------------------------------
|
15
20
|
Traceback (most recent call last):
|
16
|
-
File "
|
21
|
+
File "/usr/src/app/nyapu/diary/tests/test_views.py", line 126, in test_update_diary_success
|
17
|
-
self.assert
|
22
|
+
self.assertRedirects(response, reverse_lazy('diary:diary_detail', kwargs={'pk': diary.pk}))
|
23
|
+
File "/usr/local/lib/python3.7/site-packages/django/test/testcases.py", line 360, in assertRedirects
|
24
|
+
% (response.status_code, status_code)
|
18
|
-
AssertionError:
|
25
|
+
AssertionError: 200 != 302 : Response didn't redirect as expected: Response code was 200 (expected 302)
|
26
|
+
|
19
|
-
-
|
27
|
+
----------------------------------------------------------------------
|
20
|
-
? ^
|
21
|
-
+ タイトル編集後
|
22
28
|
?
|
23
29
|
```
|
24
30
|
|
25
31
|
### 該当のソースコード
|
26
32
|
```test_views.py
|
27
|
-
class TestDiary
|
33
|
+
class TestDiaryUpdateView(LoggedInTestCase):
|
28
|
-
"""Diary
|
34
|
+
"""DiaryUpdateView用のテストクラス"""
|
29
35
|
|
30
36
|
def _make_dummy_image(self):
|
31
37
|
"""テスト用の画像ファイルをPILで作成"""
|
@@ -36,37 +42,26 @@
|
|
36
42
|
file_obj.seek(0)
|
37
43
|
return file_obj
|
38
44
|
|
39
|
-
def test_
|
45
|
+
def test_update_diary_success(self):
|
40
|
-
"""日記
|
46
|
+
"""日記編集処理が成功することを検証する"""
|
41
47
|
|
42
48
|
# テスト用の画像ファイル
|
43
49
|
img = self._make_dummy_image()
|
44
50
|
|
45
|
-
#
|
51
|
+
# テスト用日記データの作成
|
52
|
+
diary = Diary.objects.create(
|
53
|
+
user=self.test_user,
|
46
|
-
|
54
|
+
title='タイトル編集前',
|
47
|
-
|
55
|
+
content='本文',
|
48
|
-
|
56
|
+
photo1=SimpleUploadedFile(img.name, img.read(), content_type='image/png'),
|
49
|
-
|
57
|
+
photo2='',
|
50
|
-
|
58
|
+
photo3='',
|
51
|
-
|
59
|
+
lat= 35.709,
|
52
|
-
|
60
|
+
lon= 139.7319
|
53
|
-
|
61
|
+
)
|
54
|
-
|
55
|
-
# 新規日記作成処理(Post)を実行
|
56
|
-
response = self.client.post(reverse_lazy('diary:diary_create'), params)
|
57
|
-
|
58
|
-
# 日記リストページへのリダイレクトを検証
|
59
|
-
self.assertRedirects(response, reverse_lazy('diary:diary_list', kwargs={'username': self.test_user}))
|
60
62
|
|
61
63
|
# 日記データがDBに登録されたかを検証
|
62
|
-
self.assertEqual(Diary.objects.filter(title='
|
64
|
+
self.assertEqual(Diary.objects.filter(title='タイトル編集前').count(), 1)
|
63
|
-
|
64
|
-
|
65
|
-
def test_update_diary_success(self):
|
66
|
-
"""日記編集処理が成功することを検証する"""
|
67
|
-
|
68
|
-
# テスト用日記データの作成
|
69
|
-
diary = Diary.objects.create(user=self.test_user, title="タイトル編集前")
|
70
65
|
|
71
66
|
# Postパラメータ
|
72
67
|
params = {'title': 'タイトル編集後'}
|
@@ -74,11 +69,12 @@
|
|
74
69
|
# 日記編集処理(Post)を実行
|
75
70
|
response = self.client.post(reverse_lazy('diary:diary_update', kwargs={'pk': diary.pk}), params)
|
76
71
|
|
77
|
-
# 日記詳細ページへのリダイレクト
|
72
|
+
# 日記詳細ページへのリダイレクトを検証
|
78
|
-
self.assert
|
73
|
+
self.assertRedirects(response, reverse_lazy('diary:diary_detail', kwargs={'pk': diary.pk}))
|
79
74
|
|
80
75
|
# 日記データが編集されたかを検証
|
81
|
-
self.assertEqual(Diary.objects.
|
76
|
+
self.assertEqual(Diary.objects.filter(title='タイトル編集後').count(), 1)
|
77
|
+
|
82
78
|
```
|
83
79
|
```models.py
|
84
80
|
class Diary(models.Model):
|
@@ -151,7 +147,7 @@
|
|
151
147
|
# 日記詳細ページへのリダイレクトの検証
|
152
148
|
self.assertEqual(response.status_code, 200)
|
153
149
|
|
154
|
-
assertRedirectsの場合、以下のエラーになったため、ステータスコード200のassertEqualに変更しました。
|
150
|
+
assertRedirectsの場合、以下のエラーになったため、上記のステータスコード200のassertEqualに変更しました。
|
155
151
|
```assertRedirectsの時のエラー
|
156
152
|
FAIL: test_update_diary_success (diary.tests.test_views.TestDiaryUpdateView)
|
157
153
|
日記編集処理が成功することを検証する
|
1
試したことの追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -142,7 +142,27 @@
|
|
142
142
|
},
|
143
143
|
}
|
144
144
|
```
|
145
|
+
### 試したこと
|
146
|
+
以下のコードですが、もともとはassertRedirectsにしていました。
|
147
|
+
(修正前)
|
148
|
+
# 日記詳細ページへのリダイレクトを検証
|
149
|
+
self.assertRedirects(response, reverse_lazy('diary:diary_detail', kwargs={'pk': diary.pk}))
|
150
|
+
(修正後)
|
151
|
+
# 日記詳細ページへのリダイレクトの検証
|
152
|
+
self.assertEqual(response.status_code, 200)
|
145
153
|
|
154
|
+
assertRedirectsの場合、以下のエラーになったため、ステータスコード200のassertEqualに変更しました。
|
155
|
+
```assertRedirectsの時のエラー
|
156
|
+
FAIL: test_update_diary_success (diary.tests.test_views.TestDiaryUpdateView)
|
157
|
+
日記編集処理が成功することを検証する
|
158
|
+
----------------------------------------------------------------------
|
159
|
+
Traceback (most recent call last):
|
160
|
+
File "/usr/src/app/nyapu/diary/tests/test_views.py", line 126, in test_update_diary_success
|
161
|
+
self.assertRedirects(response, reverse_lazy('diary:diary_detail', kwargs={'pk': diary.pk}))
|
162
|
+
File "/usr/local/lib/python3.7/site-packages/django/test/testcases.py", line 360, in assertRedirects
|
163
|
+
% (response.status_code, status_code)
|
164
|
+
AssertionError: 200 != 302 : Response didn't redirect as expected: Response code was 200 (expected 302)
|
165
|
+
```
|
146
166
|
### 補足情報(FW/ツールのバージョンなど)
|
147
167
|
Python 3.10.6
|
148
168
|
Django 4.0.2
|