python manage.py test
테스트 코드 실행 시킴 👉🏻 성공/실패로 출력
from django.test import TestCase
# Create your tests here.
class TestView(TestCase):
def test_post_list(self):
self.assertEqual(2,3)
테스트 코드를 실행시킨 결과 아래와 같이 2와 3이 다르다고 출력됨
from django.test import TestCase
# Create your tests here.
class TestView(TestCase):
def test_post_list(self):
self.assertEqual(2,2)
2=2로 수정후 OK 결과가 나옴
from django.test import TestCase,Client
# Create your tests here.
class TestView(TestCase):
def setUp(self):
self.client = Client()
def test_post_list(self):
#1.1 포스트 목록 페이지를 가져온다.
#1.2 정상적으로 페이지가 로드된다.
#1.3 페이지 타이틀은 'Blog'이다.
#1.4 내비게이션 바가 있다.
#1.5 Blog, About Me라는 문구가 내비게이션 바에 있다.
#2.1 메인 영역에 게시물이 하나도 없다면
#2.2 '아직 게시물이 없습니다.'라는 문구가 보인다.
#3.1 게시물이 2개 있다면
#3.2 포스트 목록 페이지를 새로고침했을 때
#3.3 메인 영역에 포스트 2개의 타이틀이 존재한다.
#3.4 '아직 게시물이 없습니다.'라는 문구는 더 이상 보이지 않는다.
from django.test import TestCase,Client
from bs4 import BeautifulSoup
from .models import Post
# Create your tests here.
class TestView(TestCase):
def setUp(self):
self.client = Client()
def test_post_list(self):
#1.1 포스트 목록 페이지를 가져온다.
response = self.client.get('/blog/')
#1.2 정상적으로 페이지가 로드된다.
self.assertEqual(response.status_code,200)
#1.3 페이지 타이틀은 'Blog'이다.
soup = BeautifulSoup(response.content,'html.parser')
self.assertEqual(soup.title.text,'Blog')
#1.4 내비게이션 바가 있다.
navbar = soup.nav
#1.5 Blog, About Me라는 문구가 내비게이션 바에 있다.
self.assertIn('Blog',navbar.text)
self.assertIn('About Me', navbar.text)
#2.1 메인 영역에 게시물이 하나도 없다면
self.assertEqual(Post.objects.count(),0)
#2.2 '아직 게시물이 없습니다.'라는 문구가 보인다.
main_area = soup.find('div', id='main-area')
self.assertIn('아직 게시물이 없습니다',main_area.text)
#3.1 게시물이 2개 있다면
post_001 = Post.objects.create(
title = '첫 번째 포스트입니다.',
content = 'Hello World. We are the world.'
)
post_002 = Post.objects.create(
title = '두 번째 포스트입니다.',
content = '1등이 전부는 아니잖아요?'
)
self.assertEqual(Post.objects.count(),2)
#3.2 포스트 목록 페이지를 새로고침했을 때
response = self.client.get('/blog/')
soup = BeautifulSoup(response.content,'html.parser')
self.assertEqual(response.status_code, 200)
#3.3 메인 영역에 포스트 2개의 타이틀이 존재한다.
main_area = soup.find('div', id='main-area')
self.assertIn(post_001.title,main_area.text)
self.assertIn(post_002.title,main_area.text)
#3.4 '아직 게시물이 없습니다.'라는 문구는 더 이상 보이지 않는다.
self.assertNotIn('아직 게시물이 없습니다',main_area.text)
테스트 케이스 2.2번 게시물이 없을 경우 처리하는 메시지가 없다.
post_list.html에 main-area라는 id가 없다.
따라서 이를 만들어준다.