본문 바로가기

pytest

(Pytest) Fixture에 매개변수 넘겨주기 함수 호출부에서 Fixture의 일부 데이터를 변경하고 싶다면, 아래와 같이 Fixture에 매개변수를 넘겨주면 된다.@pytest.fixture() def facebook_user_data(): def _data(user_id, email): return { "hometown": "Your, Hometown", "birthday": "01/01/1985", "email": email, "id": id } return _data 호출 방식은 다음과 같다.class TestUserInfo: def test_get_data__회원기본정보와_페이스북정보를_반환한다(self, mocker, facebook_user_data): user = UserFactory.create() facebook_user_data ..
(Travis CI) GitHub에 테스트 CI 연동하기 Travis CI테스트코드 돌리는 CI 툴이다. 도커 컨테이너 기반으로 돌리는거여서, 테스트 서버 환경 구성 필요없이 온라인상에서 테스트 코드를 돌릴 수 있다.간단하게 테스트 CI를 설정할 수 있고, 오픈소스에서는 무료이기 때문에, 많은 오픈소스에서 Travis CI를 사용하고 있다. ( django-oscar, aws-codedeploy-agent 등등.. )But. 프라이빗은 유료다. gitlab은 지원하지 않는다. 😧 GitHub Repository 연결하는 방법1. 트레비스에 가입한다. 그 다음, 트레비스에 github 레파지토리 권한을 준다. 2. 레파지토리에 .travis.yml 파일을 추가해준다. 3. 연결되고 나면 github commit마다 테스트 결과가 뜬다. 아래에 뜬 check 박스..
TDD Coding Dojo - 테스트코드 작성 연습 방법 이번달에 유닛테스트 작성방법 관련 스터디를 시작했다 ㅎㅅㅎ. 진행방식을 조사하다가, TDD KATA, Coding Dojo 라는 학습 방식을 알게되어 정리해보고자 한다. Coding Dojo 란? dojo는 일본말이다. 한국말로는 도장이다. 태권도 도장의 도장. Coding Dojo란, 코딩 배우는 도장을 말한다. 함께 모여서, 실무가 아닌 연습 문제를 풀어보면서, 여러가지 프로그래밍 스킬을 학습하는 방법론을 의미한다. Coding Dojo로 기대하는 바는?좋은 코딩 습관 익히기그룹 단위로 학습하기 의도적으로, 기존과는 다른 스킬들을 익히기 재밌게 학습하기 Coding Dojo로 얻을 수 있는 스킬은? 단순한 코딩 스킬 뿐만 아니라 공동 학습을 통해 여러가지 스킬을 학습하는게 목표다.페어프로그래밍 방식P..
[Django]Django 테스트코드 라이브러리 unittest VS pytest Django를 시작하면서 파이썬 테스트코드 라이브러리를 찾아봤었다. 파이썬에서는 unittest와 pytest가 많이 사용되는 편이였다 Ruby On Rails의 Rspec 같은 BDD + Unit Test 라이브러리를 찾아봤는데, 마음에드는 라이브러리를 찾지 못했다. ( 예를 들면, mamba라는 라이브러리가 있었는데, 대중적이지 않아 보여서 믿음직하지 않았다 ) Unittest와 Pytest 간단 소개 이 둘은 테스트코드를 함수단위로 작성하는 Unit Test 툴이다. unnitest는 파이썬 표준 라이브러리에 포함된 라이브러리다. pytest는 2007년에 첫 커밋되었고, 계속 활발하게 커밋되고 있는 라이브러리다. 그리고 unitest로 작성된 테스트코드와 호환된다. But. pytest 전용으로 ..
[pytest] 함수의 매개변수로 기대한 값이 전달되었는지 확인하는 테스트코드 작성하기 pytest에서 테스트 코드를 작성할 때, 특정 함수의 매개변수로 기대한 값이 잘 넘어갔는지 확인하고 싶을 때가 있습니다. 예를 들면, 외부 API와 연동하는 함수를 테스트해보고 싶을 때, 이 함수에 특정 값이 매개변수로 잘 전달되었는지 확인하고 싶어지죠. 이럴 때는 mocker 클래스와 assert_called_with 함수를 사용하면 됩니다. 예시아래의 예시는 viewset에서 내부 함수를 호출했을 때, 기대한 매개변수를 잘 전달했는지 확인하는 테스트코드입니다.class TestCommerceViewSet: def test_purchase_구매_이벤트가_로그에_남는다(self, rf, mocker): purchase_event = {'product_id': 1, 'created_time': datet..