質問編集履歴

5

typo

2022/01/28 17:29

投稿

yaxavr
yaxavr

スコア39

test CHANGED
File without changes
test CHANGED
@@ -107,7 +107,7 @@
107
107
  ```
108
108
 
109
109
 
110
- ## 環境
110
+ ## 環境(ローカルでテスト中)
111
111
  - Django 3.2
112
112
  - Python 3.9
113
113
  - MacOS Big Sur 11.6.2

4

typo

2022/01/28 17:26

投稿

yaxavr
yaxavr

スコア39

test CHANGED
File without changes
test CHANGED
@@ -13,7 +13,7 @@
13
13
 
14
14
  まとめると現状では下表のようにしているのですが、なにかもっと良い方法がありましたらお教えいただけますと助かります。
15
15
 
16
- |到達先|assert|判定結果|
16
+ |到達先|assert|判定結果|
17
17
  |---|---|---|
18
18
  |クラスベースViewのメソッド|`self.assertEqual(view.func.view_class, DrillTopView)`|OK|
19
19
  |関数(最初の実装)|`self.assertEqual(view.func, ajax_respond)`|FAILED|

3

フォーマット修正

2022/01/28 17:23

投稿

yaxavr
yaxavr

スコア39

test CHANGED
File without changes
test CHANGED
@@ -91,9 +91,9 @@
91
91
  ```python
92
92
  from django.urls import path
93
93
  from django.contrib.auth.decorators import login_required
94
- from .views import (ajax_respond, ajax_respond_new, ajax_get_drill_article,
94
+ from .views import (ajax_respond, # snip
95
- DrillTopView, DrillListRecommendView, DrillListView,
95
+ HomeView, # snip
96
- DrillStartView, DrillPlayView, DrillEditView)
96
+ )
97
97
 
98
98
  app_name = 'main'
99
99
 

2

urls.py追加

2022/01/28 17:20

投稿

yaxavr
yaxavr

スコア39

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,4 @@
1
- ログイン機能が付いたサービスを Django で初めて書いています。
1
+ ログイン機能が付いたサービスを Django で初めて作っています。
2
2
 
3
3
  今、`urls.py`に書いたそれぞれの path が `login_requred`つきのメソッド or 関数に到達するかどうかのテストを書いているのですが、ログイン状態ではどう判定すればいいのか迷っています。
4
4
 
@@ -8,6 +8,7 @@
8
8
  self.assertEqual(view.func, ajax_respond)
9
9
  AssertionError: <function ajax_respond at 0x10b3351f0> != <function ajax_respond at 0x10af44280>
10
10
  ```
11
+
11
12
  到達先の関数をlogin_required()でラップしただけなのに、なぜその関数の配置が変わるのが理解できないのですが、しかたないので、関数の判定に関しては関数オブジェクトではなく、関数名で判定するようにしてみました。
12
13
 
13
14
  まとめると現状では下表のようにしているのですが、なにかもっと良い方法がありましたらお教えいただけますと助かります。
@@ -20,7 +21,7 @@
20
21
 
21
22
  よろしくお願いいたします。
22
23
 
23
- テスト結果
24
+ ## テスト結果
24
25
  ```
25
26
  (venv)$ ./manage.py test
26
27
 
@@ -45,7 +46,7 @@
45
46
  Destroying test database for alias 'default'...
46
47
  ```
47
48
 
48
- main/test_urls.py
49
+ ## main/test_urls.py (抜粋)
49
50
  ```Python
50
51
  from django.test import TestCase, Client
51
52
  from django.urls import reverse, resolve
@@ -86,7 +87,27 @@
86
87
  # => AssertionError: <function ajax_respond at 0x10b3351f0> != <function ajax_respond at 0x10af44280>
87
88
  ```
88
89
 
90
+ ## main/urls.py (抜粋)
91
+ ```python
92
+ from django.urls import path
93
+ from django.contrib.auth.decorators import login_required
94
+ from .views import (ajax_respond, ajax_respond_new, ajax_get_drill_article,
95
+ DrillTopView, DrillListRecommendView, DrillListView,
96
+ DrillStartView, DrillPlayView, DrillEditView)
97
+
98
+ app_name = 'main'
99
+
100
+ urlpatterns = [
101
+ # path('test/', test, name='test'),
102
+ path('home/', HomeView.as_view(), name='home'),
103
+ # snip
104
+ path('<int:pk>/ajax/', login_required(ajax_respond), name='ajax'),
105
+ # snip
106
+ ]
107
+ ```
108
+
109
+
89
- # 環境
110
+ ## 環境
90
111
  - Django 3.2
91
112
  - Python 3.9
92
113
  - MacOS Big Sur 11.6.2

1

フォーマット修正

2022/01/28 17:14

投稿

yaxavr
yaxavr

スコア39

test CHANGED
File without changes
test CHANGED
@@ -42,7 +42,8 @@
42
42
  Ran 6 tests in 2.307s
43
43
 
44
44
  FAILED (failures=1)
45
- Destroying test database for alias 'default'...```
45
+ Destroying test database for alias 'default'...
46
+ ```
46
47
 
47
48
  main/test_urls.py
48
49
  ```Python