2022. 11. 15. 09:45ㆍ스파르타코딩클럽[AI트랙 3기]/TIL
221114
어떻게 보면 가능한 일일지도? 모르겠다는생각이 든다.. 음 강의도 차근차근 듣고있고.. 어찌됐던 나는 낭비할 시간이 없기에 최선을 다해 보는 수 밖에!! 팀원들 덕분에 정말 좋은 효과를 보는 것 같다.. 진작에 이랬다면 얼마나 좋았을까 싶다 ㅠ
ㅁdrf 1,2주차 강의
https://pocachips.tistory.com/146
[장고DRF]1,2주차(CRUD)
ㅁdrf 1주차 1,2 강 오티 3.강프론트와 백엔드 나누는다는 의미 1)퓨어장고 루틴 urls로 요청 > views.py의 함수와 연결(views.함수) > 함수 실행(return 해서 템플릿으로 보여줌) > *template app > .html 파일에서
pocachips.tistory.com
ㅁ도커 3주차 절반
https://pocachips.tistory.com/149
[도커실무] #3
ㅁ도커 3주차 3주차에 배울 것 -리눅스와 도커 활용해서 배포하기 1)구니콘을 이용해 장고 배포환경 구축 2)장고와 포스트그레sql 디비 연동하기 3)엔진엑스를 활요해 외부에서 내가 만든 서버에
pocachips.tistory.com
ㅁtest 코드 강의
1.drf에서 test코드 작성하기
-작업진행 방식 : 구현 > 웹브라우저로 확인 > 개선점 찾기
-문제점 : 시간낭비, 복잡도증가, 허점
-테스트 코드
파이선 유니테스트 모듈
2.프로젝트 설정과 첫 테스트코드
-프로젝트 코드
1)가상환경설정, 실행
2)패키지 설치 requirements.txt
3)python manage.py test
4)앱들어가서 test.py 확인하기
*test.py
class TestView(TestCase):
def test_two_is_three(self):
self.assertEqual(2,3)
>>>python manage.py test > failed 뜸
def test_two_is_two(self):
self.assertEqual(2,2)
3.장고에서 쓸 수 있는 테스트툴들
drf에서 테스팅하기 drf testing 구글링
장고 drf에서 사용하는 툴 > unitest 또는 pytest (설치 필요)
4.회원가입 테스트
1)user url 만지기
*users > urls.py
path(‘’,views.UserView.as_view(), name=“user_view”),
*test.py
from django.urls import reverse
from rest_framework.test import APITestCase
from rest_framework import status
class UserRegisterationAPIViewTestCase(APITestCase):
def test_registration(self):
url = reverse(“user_view“)
user data = {
“username”:“testuser”
“fullname”:“테스터”
“email”:“test@testuser.com”
“password”:“password”
}
response = self.client.post(rul, user_data)
self.assertEqual(response.status_code, 200)
>python manage.py test 하면 결과 나옴. 무슨에러인지 확인하고 싶으면 self 윗줄에 print(response.data)
5.로그인테스트
class는 그대로 가져오고
def test_login(self):
url = reverse(“token_obtain_pair“)
user data = {
“username”:“testuser”
“fullname”:“테스터”
“email”:“test@testuser.com”
“password”:“password”
}
response = self.client.post(rul, user_data)
self.assertEqual(response.status_code, 200)
401 에러 나옴. 레즈스트레이션에서 정상적으로 등록되었음에도 불구하고 왜 없을까?
6.setup 메소드
테스트에서는 메소드 하나를 실행할때마다 디비를 임시로만들어서 확인하고 없애버림. 그래서 디비에 안들어온다고생각하면 됨(모든 테스트는 독립적). 따라서 test_login에서는 데이터가 없는 상태라 위와같이 오류가 나옴.
def setup메소드는 모든 테스트실행 전에 실행됨.
+)def teatdDown() : 마지막으로 실행하는 것.
7setup을 이용한 로그인테스트
위에 로그인 테스트 지우고 새로 클래스 생성
class LoginUserTest(APITestCase):
def setUp(self):
self.data = {‘username’:‘john’,‘password’:‘johnpassword’}
self.user = User.objects.create_user(‘john’,‘johnpassword’) #model의 def create_user를 씀. username과 password 받아줌.
def test_login(self):
response = self.client.post(reverse(‘token_obtain_pair’), self.data)
print(response.data[“access”])
self.assertEqual(response.status_code, 200)
#모델에 print 가입이 있어서 가입도 나오는데 이부분도 지워줘야함.
8.drf 테스트코드 작성하기 ot
9.사용자 정보 가져오기 테스트
class LoginUserTest에서 이미 setup을 해뒀기 때문에 아래에 바로 생성하면 됨.
def test_get_user_data(self):
access_token = self.client.post(reverse(‘token_obtain_pair’),self.data).data[‘access’]
response self.client.get
path=reverse(“user_view”), #accesstoken을 해더에 싣어서 get요청을 ser_view url에
HTTP_AUTHORIZATION=f“Bearer {acess_token}”
self.assertEqual(response.status_code, 200)
self.assertEqual(response.data[‘username’], self.data[‘username’])
>python manage.py test users #users에있는 test만 진행
ㅁ에러잡기
1)포스트맨 에러
런타임 오류 > put 써줄때 url 마지막에 /로 닫아줘야 정상작동.
2)
-에러: Expected a `Response`, `HttpResponse` or `HttpStreamingResponse` to be returned from the view, but received a `<class 'NoneType'>`
리턴값없으면 이렇게 된다. 항상 마지막에 return Response()를 적어줄 것
'스파르타코딩클럽[AI트랙 3기] > TIL' 카테고리의 다른 글
| [내일배움단 ai트랙 3기] TIL 221116 (0) | 2022.11.17 |
|---|---|
| [내일배움단 ai트랙 3기] TIL 221115 (0) | 2022.11.16 |
| [내일배움단 ai트랙 3기] TIL 221111 (0) | 2022.11.14 |
| [내일배움단 ai트랙 3기] TIL 221110 (0) | 2022.11.11 |
| [내일배움단 ai트랙 3기] TIL 221109 (0) | 2022.11.10 |