본문 바로가기

소프트웨어 이야기/테스트 자동화

(Travis CI) GitHub에 테스트 CI 연동하기 Travis CI테스트코드 돌리는 CI 툴이다. 도커 컨테이너 기반으로 돌리는거여서, 테스트 서버 환경 구성 필요없이 온라인상에서 테스트 코드를 돌릴 수 있다.간단하게 테스트 CI를 설정할 수 있고, 오픈소스에서는 무료이기 때문에, 많은 오픈소스에서 Travis CI를 사용하고 있다. ( django-oscar, aws-codedeploy-agent 등등.. )But. 프라이빗은 유료다. gitlab은 지원하지 않..
TDD Coding Dojo - 테스트코드 작성 연습 방법 이번달에 유닛테스트 작성방법 관련 스터디를 시작했다 ㅎㅅㅎ. 진행방식을 조사하다가, TDD KATA, Coding Dojo 라는 학습 방식을 알게되어 정리해보고자 한다. Coding Dojo 란? dojo는 일본말이다. 한국말로는 도장이다. 태권도 도장의 도장. Coding Dojo란, 코딩 배우는 도장을 말한다.  함께 모여서, 실무가 아닌 연습 문제를 풀어보면서, 여러가지 프로그래밍 스킬을 학습하는 방법론을 의미한다..
유닛테스트를 작성하는 3가지 접근방법 - Test First VS Test Last VS Test Driven 해당 글은 Unit Testing with Python: Why and When Should You Write Unit Tests? 세션의 요약본입니다 ㅎㅂㅎ.개발할 때, 테스트 코드를 작성하는 접근 방식은 크게 3가지가 있다. Test Last개발 다 하고, 오류가 없는지 검증하기 위한 목적으로 회귀 테스트를 작성하는 방식이다. Test Last 방식도 개발 중간에 테스트를 한다. 중간 중간에 수동테스트를 하면서, ..
(Pytest) mongoengine + factoryboy 조합으로 사용할 때, 데이터 리셋시키기 mongoengine + factory boy 조합 문제점원래 factoryboy를 쓰면, 테스트 데이터가 롤백된다. 그런데 mongoengine을 factory boy로 매핑해서 사용하면, 데이터가 롤백되지 않는다.mongo에 테스트 데이터가 계속 쌓인다.해결방법테스트코드가 돌때마다 몽고 디비를 drop 시키면 된다. ( 이렇게하면 몹시 느리다 ㅋ )A. 몽고 DB Drop fixture 만들기 ### FILE:..
[Django]Django 테스트코드 라이브러리 unittest VS pytest Django를 시작하면서 파이썬 테스트코드 라이브러리를 찾아봤었다. 파이썬에서는 unittest와 pytest가 많이 사용되는 편이였다Ruby On Rails의 Rspec 같은 BDD + Unit Test 라이브러리를 찾아봤는데, 마음에드는 라이브러리를 찾지 못했다. ( 예를 들면, mamba라는 라이브러리가 있었는데, 대중적이지 않아 보여서 믿음직하지 않았다 )Unittest와 Pytest 간단 소개 이 둘은 테..
[pytest] PyCharm 기본 테스트 라이브러리를 pytest으로 변경하기 PyCharm의 기본 테스트 코드 runner는 unittest로 되어있다. 그래서 pytest으로 테스트코드 돌릴 때에는 설정값들을 변경해줘야한다.1. Pycharm Preferences > Django > Do not use Django test runner 체크해주기 2. Preference > Default test runner를 pytest으로 변경해준다끝 :) 
[pytest] 함수의 매개변수로 기대한 값이 전달되었는지 확인하는 테스트코드 작성하기 pytest에서 테스트 코드를 작성할 때, 특정 함수의 매개변수로 기대한 값이 잘 넘어갔는지 확인하고 싶을 때가 있습니다. 예를 들면, 외부 API와 연동하는 함수를 테스트해보고 싶을 때, 이 함수에 특정 값이 매개변수로 잘 전달되었는지 확인하고 싶어지죠. 이럴 때는 mocker 클래스와 assert_called_with 함수를 사용하면 됩니다. 예시아래의 예시는 viewset에서 내부 함수를 호출했을 때, 기대한 매개변수..
(Django) Rspec VS PyTest 차이1. Pytest는 함수단위로, Rspec은 스펙 단위로 테스트코드를 작성한다.pytest는 함수 단위로 테스트 코드를 작성한다. 이런 느낌Rspec은 BDD 기반의 테스트 코드다. 테스트 케이스를 구조화하고, 맥락이 비슷한 테스트케이스를 한군데에 모으고, 여러 코드를 재사용하기에는 Rspec이 더 편했다. describe '#destroy' do context 'when resource is found' do ..