GitHubActions에서 pipenv를 테스트했습니다.

에 최근 풀릭이 와서, 테스트 쓰지 않으면~라고 생각한 것이 계기입니다

목차


  • unittest를 사용하여 테스트 코드를 작성해 보았습니다!
  • GitHub Actions에서 테스트 자동화를 시도했습니다!

  • unittest를 사용하여 테스트 코드를 작성해 보았습니다!



    참고 : htps : // 이 m / 아오미 d로 / ms / 3에 3449f에서 924893f18

    작성한 코드 : htps : // 기주 b. 코 m/순-yryr/레 c아아오/bぉb/훗아트레/서 st/에서 st/에서 st_분 c. py

    Python에는 표준 모듈로 unittest가 있습니다. 이것을 사용하여 테스트 코드를 작성해 보았습니다.

    상당히 운용으로 커버하고 있는 부분이 많으므로 주의해 주십시오
    unittest.TestCase 의 서브 클래스로서 각 테스트 코드를 써 갑니다
    import unittest
    import テストするモジュール as f
    class TestCalculate(unittest.TestCase):
        def test_add(self):
            # 足し算のテスト
            self.assertEqual(f.add(3, 5), 8)
    
        def test_sub(self):
            # 引き算のテスト
            self.assertEqual(f.sub(3, 5), -2)
    

    사용 가능한 assert 메소드는 여기 에 있습니다.

    테스트용의 메소드는 test 로 시작할 필요가 있습니다.
    if __name__ == "__main__":
        unittest.main()
    

    main을 부르면 테스트가 실행됩니다.

    여러 파일로 분할하여 테스트 코드를 작성하는 것이 대부분이라고 생각합니다.
    python -m unittest discover -v 를 실행하면 현재 디렉토리 테스트가 모두 실행됩니다.

    pipenv의 scripts에 등록



    모처럼 pipenv를 사용하고 있으므로 scripts에 등록합니다.

    위의 명령은 테스트 코드가 있는 폴더에서 할 필요가 있기 때문에 한가지 추가합니다.
    [scripts]
    test = "bash -c \"cd test ; python -m unittest discover\""
    

    테스트 코드의 폴더로 이동하는 cd 를 먼저 칠 필요가 있으므로, bash -c 로 실행해 줍니다.
    $ pipenv run 
    ....
    ----------------------------------------------------------------------
    Run 4 tests in 0.386s
    
    OK
    

    OK가 나오면 완성입니다.

    GitHub Actions에서 테스트 자동화를 시도했습니다!



    테스트를 만들면 자동화하겠죠?

    Actions → New workflow → Python application을 선택합니다.



    템플릿이 사용하기 쉽고 훌륭합니다 ......

    아래와 같은 템플릿이 적용된 yaml 파일이 가능합니다.
        # This workflow will install Python dependencies, run tests and lint with a single version of Python
        # For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions
    
        name: Python application
    
        on:
          push:
            branches: [ master ]
          pull_request:
            branches: [ master ]
    
        jobs:
          build:
    
            runs-on: ubuntu-latest
    
            steps:
            - uses: actions/checkout@v2
            - name: Set up Python 3.8
              uses: actions/setup-python@v1
              with:
                python-version: 3.8
            - name: Install dependencies
              run: |
                python -m pip install --upgrade pip
                pip install -r requirements.txt
            - name: Lint with flake8
              run: |
                pip install flake8
                # stop the build if there are Python syntax errors or undefined names
                flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
                # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
                flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
            - name: Test with pytest
              run: |
                pip install pytest
                pytest
    

    적당하게 설정해 갑니다.
        name: Python application
    

    이름입니다, 좋아하는 이름으로합시다.
        on:
          push:
            branches: [ master ]
          pull_request:
            branches: [ master ]
    

    어떤 브랜치의 어떤 조작으로 액션을 실행할지 결정합니다. 대부분 그대로 괜찮습니다.
        runs-on: ubuntu-latest
    

    어떤 이미지로 실행할지, 라고 생각합니다. (잘 모르기 때문에 건너 뛰기)
    
        steps:
        - uses: actions/checkout@v2
        - name: Set up Python 3.8
          uses: actions/setup-python@v1
          with:
            python-version: 3.8
    

    ?

    파이썬의 버전을 지정하는 정도밖에 모른다
        - name: Install dependencies
          run: |
            python -m pip install --upgrade pip
            pip install -r requirements.txt 
        - name: Lint with flake8
          run: |
            pip install flake8
            # stop the build if there are Python syntax errors or undefined names
            flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
            # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
            flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
        - name: Test with pytest
          run: |
            pip install pytest
            pytest
    

    name, run 로 1 세트. run으로 지정한 명령이 달리는 것 같습니다.

    설정한 물건이 이렇게
        # This workflow will install Python dependencies, run tests and lint with a single version of Python
        # For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions
    
        name: Python application
    
        on:
          push:
            branches: [ master ]
          pull_request:
            branches: [ master, release ]
    
        jobs:
          build:
    
            runs-on: ubuntu-latest
    
            steps:
            - uses: actions/checkout@v2
            - name: Set up Python 3.6
              uses: actions/setup-python@v1
              with:
                python-version: 3.6
            - name: Install Pipenv
              run: |
                python -m pip install --upgrade pip
                pip install pipenv
            - name: Install dependencies
              run: |
                pipenv sync
            - name: Test with unittest
              run: |
                pipenv run test
    

    요약





    움직였기 때문에 OK! 튜닝은 다른 기회!

    좋은 웹페이지 즐겨찾기