CircleCI로 파이썬 테스트 자동화

6747 단어 CircleCI파이썬
CI란?

지속적 통합, CI(영문: continuous integration)는 모든 개발자의 작업 사본을 하루에 여러 번 공유된 메인라인에 병합하는 것입니다.
(wikipedia)

통합이라고 들으면 수수께끼이지만, 요컨대 빌드, 테스트, 배포 작업을 자동화하는 개발 방식입니다. CI를 도입함으로써 소프트웨어 개발을 효율적으로 실시할 수 있는 것 같다.

이 기사에서는 CircleCI와 Github를 연계시켜 파이썬 개발 코드를 푸시하면 자동으로 테스트가 실행되는 환경 구축을 목표로합니다.
참조 기사 : htps : //s이 tch. 이오 / 쓰리 아 ls / 안녕하세요, s, g, chichi, thypy, an, d, rc,

도구



계정을 등록하고 CircleCI와 Github를 연동시켜 둔다.
  • GitHub
  • Circle CI

  • 환경설정


  • Python: 3.7

  • 프로젝트 만들기



    아래와 같이 프로젝트 파일을 작성한다.

    폴더 구성
    +-- pyhton-ci
        +-- src
        |   +-- match.py
        +-- tests
            +-- math-test.py
    

    src/math.py
    def addition(value1, value2):
        if not isinstance(value1, int) and not isinstance(value2, int):
            return 'Invalid input'
        else:
            return value1 + value2
    

    tests/math-test.py
    import unittest
    from src.math import addition
    
    class MathTest(unittest.TestCase):
        def test_addition(self):
            actual = addition(3,4)
            expected = 8 # 実行結果と一致
            self.assertEqual(actual, expected)
    

    명령줄에서 unittest 실행
    nosetests tests/math-test.py 
    
    AssertionError: 7 != 8 가 출력되어 테스트가 실패했는지 확인한다.

    CircleCI용 파일 준비



    프로젝트에 다음 파일 추가
    +-- pyhton-ci
        +-- src
        |   +-- match.py
        +-- tests
        |   +-- math-test.py
        +-- requirements.txt
        +-- .circleci
            +-- config.yml
    

    종속성 관리 파일

    requirements.txt
    nose==1.3.7
    

    circleCI 설정 파일
    version: 2
    jobs:
      build:
        working_directoyr: ~/python-ci
        docker:
          - image: circleci/python:3.6.4
        steps:
          - checkout
          - run:
              command: sudo pip install -r requirements.txt
          - run:
              command: nosetests tests/math-test.py
    

    새로운 Github 저장소를 만들고 전체 프로젝트 폴더를 develop 브랜치에 푸시합니다.
    git push origin develop
    

    CircleCI 설정



    CircleCI 화면에서 Projects -> 리포지토리 선택 -> Start Building -> Add Manually -> Start Building
    및 선택





    Pipelines 화면에 테스트 결과가 표시됩니다.


    Github Status Checks 활성화



    Github 리포지토리의 Settings -> Branches 탭 -> Add rule 선택



    Branch name pattern 에 develop (개발 브랜치 이름)을 입력하고,
    Require status checks to pass before mergingRequire branches to be up to date before merging에 체크를 한다.


    적당히 작업 브랜치를 잘라 develop에 풀릭을 보내 보자.
    그러면 풀릭 화면에서 다음과 같은 상태 확인이 수행됩니다.


    테스트 코드를 아래와 같이 수정하고 다시 push한다.

    math-test.py
    class MathTest(unittest.TestCase):
        def test_addition(self):
            actual = addition(3,4)
            expected = 7 # 実行結果と一致
            self.assertEqual(actual, expected)
    

    테스트에 통과하고 있는 것을 확인할 수 있었다!

    좋은 웹페이지 즐겨찾기