본문 바로가기

TIL

This Week. 2.14 ~ 2.18

회사에  출근하고 거의 테스트 코드 리팩터링을 했다. 기존에 fixture 들로 짜인 코드들을 FactoryBoy라는 파이썬 라이브러리를 사용해서 리팩터링 했는데, 이게 내가 너무 조급한 건지 모델이랑 코드가 복잡해서 그런지 생각보다 어려웠다. 팩토리 보이 자체가 어렵다기보다는 결국에 이게 지금 서비스의 모델을 기반으로 테스트 모델들을 만들어줘서 결국 모델이 복잡하니까 더 헷갈렸다. 또 너무 조급해서 그런지 코드만 쳐다보고 있어서 시간을 효율적으로 못쓴 거 같다. 팩토리 보이를 쓰면 중복되는 테스트 코드량도 줄고 또 테스트 코드 작성하면서 서비스 전반적으로 파악할 수 있는 거 같다. relatedfactory이니 post_generation이니 구체적인 개념은 사실 공식문서에 더 정확히 나와서 공식문서를 한번 더 보는 게 좋을 거 같다. 처음에 헷갈렸던 건 relatedfactory랑 subfactory 가 비슷해서 헷갈렸는데 이런 건 확실히 코드를 많이 보는 게 빠른 거 같다. 정의는 다음과 같다.

SubFactory
This attribute declaration calls another Factory
 subclass, selecting the same build strategy and collecting extra kwargs in the process.
RelatedFactory
A RelatedFactory behaves mostly like a SubFactory, with the main difference that the related Factory will be generated after the base Factory.

테스트코드 리팩터링을 하면서 작은 태스크들도 조금 했는데, GraphQL도 처음 봐서 조금 공부를 했다. 공부를 하다 보니까 지금 서비스가 Django로 되어 있어서 장고에서 그래프 큐엘을 쉽게 사용하는 라이브러리인 Graphine-django  공식문서를 보면서 공부하니 훨씬 수월했다. 그래프큐엘도 대략적인 개념을 잡고 결국 서비스가 어떻게 돌아가는지가 더 우선인 거 같아서 계속 코드만 본거 같다. 어차피 개념은 단순한 거 같다. 아직 별로 안 봐서 그런 거 같지만... 장고 같은 경우는 예전에 써본 적이 있어서 일단 처음 본 것들 위주로 공부를 했다. 그래프 큐엘의 장점으로 이야기하는 게 엔드포인트가 한 개여서 좋다고 하는데,  url 부분에 그냥 graphql 딱 하나 들어간다. 근데 또 그 뒤에 처리하는 거 건 스키마로 엄청 많다. 근데 뭐 이건 rest api 써도 비슷하니까. url이라도 단순히 줄인 거 자체가 좋은 거 같다. 그리고 리액트에서 쿼리 보내는 것도 직관적으로 알기가 쉽다. 그래서 풀 스택으로 개발한다고 생각하면 확실히 빠르게 적용할 수 있을 거 같다. 작성된 코드만 봐서 그런지는 몰라도 그런 느낌이다.

그래프큐엘의 개념은 비슷하니까. 그래핀을 장고에서 사용할 때 정리하면 좋을 거 같은 부분이 내 생각에, 크게 구조가 타입들이랑 쿼리들로 나뉘는데 그 타입이라는 부분은 우리가 만든 모델이랑 연결이 돼서 필드 주면 그것만 찾아온다 그리고 설정해서 추가로 더 가져오거나 수정할 수 있다. 사용하는 방식이 엄청 편하다. 그리고 쿼리 부분은 필드들로 이뤄져 있고 그 필드들이 방금 말한 타입들로 이뤄져 있다. 그리고 resolve라고 해서 들어온 명령 처리하는 부분이 있다. 이게 쿼리 보낼 때 한 번에 필요한 것들 찾아서 요청하면 된다. 모델 안에 모델 있으면 그에 맞는 resolve가 계속 있다.  그래프 큐엘도 일단 코드를 보면서 더 익혀야 곘다. 

 

 회사를 다니면서  뭔가를 배우고 해결해 나가는건 너무 즐겁다. 신기한건 주말에 집 와서 하면 훨씬 여유가 생겨서 잘되는 거 같다. 회사에서 잘 안 돌아가던 머리도 집에서 다시 여유롭게 다시 보니 쉽게 해결 가능한 부분인 게 많았다. 조금 여유를 갖는 게 좋을 거 같다.

 

 

출처 및 참고 : https://factoryboy.readthedocs.io/en/stable/index.html

 

factory_boy — Factory Boy stable documentation

© Copyright 2011-2015, Raphaël Barrois, Mark Sandstrom. Revision 88458348.

factoryboy.readthedocs.io

https://graphql.org/learn/queries/

 

Queries and Mutations | GraphQL

Queries and Mutations On this page, you'll learn in detail about how to query a GraphQL server. Fields# At its simplest, GraphQL is about asking for specific fields on objects. Let's start by looking at a very simple query and the result we get when we run

graphql.org

https://docs.graphene-python.org/projects/django/en/latest/installation/

 

Graphene-Python

Installation Graphene-Django takes a few seconds to install and set up. Requirements Graphene-Django currently supports the following versions of Django: Installation pip install graphene-django We strongly recommend pinning against a specific version of G

docs.graphene-python.org

 

'TIL' 카테고리의 다른 글

객체지향의 사실과 오해 3~4장  (1) 2022.03.31
객체지향의 사실과 오해 1장~2장  (0) 2022.03.20
This Week. 2.1 ~ 2.6  (0) 2022.02.06
Refactoring. 리팩터링이 필요한 경우  (0) 2022.02.05
Refactoring. 리팩터링 원칙  (0) 2022.02.04