Python 코드 커버리지 분석 도구 커버리지

목차

소개

설치하다

명령줄 사용

다음을 사용하여 API 호출


소개

Coverage는 Python 테스트 코드의 품질을 측정하는 데 사용할 수 있는 Python 코드 커버리지 분석 도구입니다. 커버리지 데이터를 코드 실행에 가져옴으로써 Coverage는 개발자가 회귀 테스트 중인 코드의 취약점을 찾고 테스트되지 않은 코드를 표시하는 데 도움을 줄 수 있습니다.

커버리지는 테스트된 코드 부분, 테스트되지 않은 부분, 상대적으로 누락된 코드를 알려줍니다. Coverage를 사용하면 코드 품질을 효과적으로 개선하고 품질 문제의 가능성을 줄일 수 있습니다. 커버리지는 지속적 통합(CI) 및 지속적 제공(CD) 프로세스에 쉽게 통합되어 품질 문제를 조기에 식별하고 해결할 수 있습니다.

설치하다

Coverage는 Python의 타사 라이브러리로 사용 시 먼저 설치가 필요하며 pip 명령을 사용하여 설치합니다.
설치 명령:

C:\Users\TynamYang>pip 설치 범위
취재 범위
다운로드 범위-5.1-cp37-cp37m-win32.whl (204 kB)|███████████████████████████████| 204kB 731kB/s
수집된 패키지 설치: 범위
커버리지 설치 성공-5.1C:\Users\TynamYang>

설치가 완료되면 설치된 버전을 확인할 수 있습니다: coverage-5.1
설치 완료 후 Coverage 사용 Coverage를 사용하는 방법에는 명령줄에서 사용하는 방법과 다음을 통해 사용하는 방법이 있습니다. API를 호출합니다. 테스트가 필요한 코드 부분을 제어하는 ​​것이 편리합니다.

명령줄 사용

1. 기본 매개변수
명령줄에서 사용되는 공통 매개변수:

  • run – Python 프로그램을 실행하고 실행 데이터를 수집합니다.

  • 보고 - 보도 범위 결과 보고

  • html – 커버리지 결과 목록이 있는 HTML 파일 생성

  • json – 커버리지 결과가 포함된 JSON 파일 생성

  • xml – 커버리지 결과가 포함된 XML 보고서 파일 생성

  • 지우기 – 이전에 수집된 커버리지 데이터 지우기

  • 결합 – 여러 데이터 파일 결합

  • 디버그 – 디버그 정보 얻기

help 명령을 사용하여 도움말을 볼 수 있습니다.

보장 도움말

2. 코드를 실행하여 정보 수집

Coverage 사용 시 기본적으로 2단계 작업이 필요하며, 첫 번째 단계는 소스 코드를 실행하여 테스트된 소스 코드의 Coverage 정보를 수집하고, 두 번째 단계는 코드 커버리지 정보 보고서를 생성하는 것입니다.
다음 테스트 코드:

#test.py
# coding:utf-8
import unittest
def add_numb(a, b):
    return a + b
def division_numb(a, b):
    return a / b
class Test(unittest.TestCase):
    def test_add_1(self):
        self.assertEqual(add_numb(1,1), 2)
    def test_add_2(self):
        self.assertEqual(add_numb(2,0), 1)
    def test_division_1(self):
        self.assertEqual(division_numb(2,1), 2)
    def test_division_2(self):
        self.assertEqual(division_numb(2,0), 2)
if __name__ == "__main__":
    unittest.main(verbosity=2)

다음 명령으로 실행:

coverage run test.py
C:\Users\TynamYang\Desktop> 커버리지 실행 test.py
test_add_1 (__main__.Test) ... 확인
test_add_2 (__main__.Test) ... 실패
test_division_1 (__main__.Test) ... 확인
test_division_2 (__main__.테스트) ... 오류

==================================================== =====================
오류: test_division_2(__main__.테스트)
-------------------------------------------------- --------------------
추적(가장 최근 호출 마지막):
파일 "test.py", 22행, test_division_2
self.assertEqual(division_numb(2,0), 2)
파일 "test.py", 줄 9, division_numb
반환 a / b
ZeroDivisionError: 0으로 나누기

==================================================== =====================
실패: test_add_2(__main__.Test)
-------------------------------------------------- --------------------
추적(가장 최근 호출 마지막):
파일 "test.py", 16행, test_add_2
self.assertEqual(add_numb(2,0), 1)
주장 오류: 2 != 1

-------------------------------------------------- --------------------
0.003초에 4개의 테스트 실행

실패(실패=1, 오류=1)
PS C:\Users\TynamYang\Desktop>

코드가 실행된 후 커버리지 통계 결과 파일: .coverage가 생성됩니다. 파일 이름은 COVERAGE_FILE 환경 변수를 설정하여 변경할 수 있습니다.

3. 보고서 생성

보고서를 보는 방법에는 두 가지가 있습니다. 하나는 현재 명령줄 모드에서 보는 것이고 다른 하나는 볼 수 있도록 HTML 보고서 파일을 생성하는 것입니다.
명령줄 모드로 보기
코드 실행 후 생성된 .coverage 파일에 따라 보고서 매개 변수를 사용하여 명령줄 모드에서 커버리지 통계 결과를 볼 수 있습니다.
다음 명령을 사용하십시오.

coverage report
PS C:\Users\TynamYang\Desktop> 커버리지 리포트
이름 Stmts Miss Cover
--------------------------------------------
test.py 16 0 100%
PS C:\Users\TynamYang\Desktop>

결과에서 우리는 실행된 test.py 파일의 코드 커버리지 비율이 100%임을 알 수 있습니다.
결과 디스플레이의 필드 의미:

  • tmts: 총 명령문 수

  • 미스: 실행되지 않은 문 수

  • 커버: 커버리지, 계산식 커버=(Stmts-Miss)/Stmts

HTML 보고서 파일 생성
HTML 보고서를 생성하려면 다음 명령을 사용하십시오.

coverage html -d covhtml

매개변수 -d는 생성된 html이 지정된 폴더의 이름이며
명령이 실행된 후 covhtml 파일이 생성됩니다.

파일의 Index.html 파일 커버리지 데이터 통계.
몇 가지 예도 참조하십시오. 코그 적용 범위

각 필드에 대한 설명:

  • Stmts 유효 코드 줄의 총 수(빈 줄 및 주석 줄 제외)

  • 미스 실행되지 않은 코드 줄 수(공백 줄 및 주석 줄 제외)

  • 지점 총 지점 수

  • BrMiss 실행되지 않은 분기 수

  • 표지 코드 범위

  • Missing 소스 파일에서 실행되지 않은 코드 부분의 줄 번호

실행된 테스트의 원래 파일 이름을 딴 파일은 포함된 코드와 포함되지 않은 코드를 모두 강조 표시할 수 있습니다. test_py.html과 같은.
몇 가지 예도 참조하십시오

다음을 사용하여 API 호출

문서를 사용하기 위해 API를 호출합니다: http://coverage.readthedocs.org/en/latest/api.html
파이썬 코드에서 커버리지 모듈을 호출하여 코드를 실행함으로써 코드 커버리지의 통계 결과가 생성됩니다. 사용 방법도 다음 예와 같이 매우 간단합니다.

if __name__ == "__main__":
    # 实例化对象
    cov = coverage.coverage()
    # 开始分析
    cov.start()
    suite = unittest.defaultTestLoader.discover(os.getcwd(), "test.py")
    unittest.TextTestRunner().run(suite)
    # 结束分析
    cov.stop()
    # 结果保存
    cov.save()
    # 命令行模式展示结果
    cov.report()
    # 生成HTML覆盖率报告
    cov.html_report(directory='covhtml')

이곳을 다녀온 사람으로서 저도 우회로를 피해 가시길 바라며 도움이 되었으면 합니다. (WEB 자동 테스트, 앱 자동 테스트, 인터페이스 자동 테스트, 지속적인 통합, 자동 테스트 개발, 대규모 공장 인터뷰 질문, 이력서 템플릿 등), 더 나은 발전을 해줄 것이라고 믿습니다! 

그냥 [자동 테스트] [자동 테스트 통신]: 574737577 (참고 ccc) icon-default.png?t=N5F7http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=hyGITtX0cD6EN96WzR_d5b1qRSZ-Dpyy&authKey=76TmCzaAQ%2BOwLn6umFFZeVxKheSwya UVwymd %2FRvdARY6cvCSCgZ1qOSe3w% 2Bsh61f&noverify =0&group_code=574737577

 

Supongo que te gusta

Origin blog.csdn.net/Free355/article/details/131287280
Recomendado
Clasificación