Faker
- 더미데이터를 만든다.
https://pypi.org/project/django-faker/
pip install Faker
from faker import Faker
faker = Faker()
# 이름에만 한글이 적용됨
faker = Faker("ko_KR")
print(faker.name())
print(faker.first_name())
print(faker.last_name())
print(faker.word())
print(faker.sentence())
print(faker.text())
Faker로 게시글 여러개 만들기
from articles.models import Article
from faker import Faker
# 그 밖에 import 안 한게 있다면 추가하기
class ArticleReadTest(APITestCase):
@classmethod
def setUpTestData(cls):
cls.faker = Faker()
cls.articles = []
#10명의 유저가 게시글 작성
for i in range(10):
cls.user = User.objects.create_user(cls.faker.name(), cls.faker.word())
cls.articles.append(
Article.objects.create(
title=cls.faker.sentence(),
content=cls.faker.text(),
user=cls.user,
)
)
(app - urls.py)
urlpatterns = [
path('<int:pk>/', views.ArticleDetailView.as_view(),name='article_detail_view'),
]
(app - models.py)
from django.urls import reverse
class Article(models.Model):
user = models.ForeignKey(User, on_delete=models.SET_NULL, null=True)
#추가하기
def get_absolute_url(self):
# 'pk'값으로 self.pk값을 kwargs에 넣어줌
# article_detail_view에 pk 값을 넣고 그 url의 문자열을 가져옴
return reverse('article_detail_view', kwargs={'pk':self.pk})
(app - views.py)
class ArticleDetailView(APIView):
def get(self, request, pk):
article = ArticleModel.objects.get(pk=pk)
serializer = ArticleSerializer(article)
return Response(serializer.data)
(app - test.py)
from articles.serializers import ArticleSerializer
class ArticleReadTest(APITestCase):
def test_get_article(self):
for article in self.articles:
# 함수의 return 값으로 url 값을 가져옴
url = article.get_absolute_url()
response = self.client.get(url)
serialize = ArticleSerializer(article).data
#items : key와 value를 뽑아내고 싶을 때 사용
for k, v in serialize.items():
# response.data[k]는 reponse의 value값
self.assertEqual(response.data[k], v)
print(k, v)
#위와 똑같음
#self.assertEqual(article.title, response.data['title'])
(app - models.py) 유저를 이름으로 보여주기
class ArticleSerializer(serializers.ModelSerializer):
user = serializers.SerializerMethodField()
# get + 언더바(_) + serializers.SerializerMethodField()
def get_user(self, obj):
return obj.user.username
'Python > Django' 카테고리의 다른 글
[DRF] 16. setUpTestData (0) | 2023.04.30 |
---|---|
[DRF] 15. setUp, @classmethod, @staticmethod (0) | 2023.04.27 |
[DRF] 14.5 테스트 코드 종류 (0) | 2023.04.27 |
[DRF] 14. 테스트 코드란? (0) | 2023.04.27 |
[DRF] 13. 개인페이지 (Q객체, F객체) (0) | 2023.04.27 |