콘텐츠로 건너뛰기

파이썬 -m doctest를 사용하여 오류 수정하는 방법은?

[

Python Learn / Courses / Software Engineering Principles in Python

Software Engineering & Data Science

  • 왜 데이터 과학자로서 소프트웨어 엔지니어링 개념에 관심을 가져야 할까요? 여기에서는 특정 소프트웨어 엔지니어링 개념을 다루고 이러한 중요한 아이디어가 데이터 과학 워크플로우를 혁신시킬 수 있는 방법에 대해 설명합니다.

Writing a Python Module

  • 첫 번째 패키지를 작성함으로써 완전한 파이썬 패키지 개발자가 되어보세요! NumPy와 Pandas와 같은 유명한 패키지와 마찬가지로 설치, 사용 및 배포할 수 있는 파이썬 코드를 구조화하고 작성하는 방법을 배우게 됩니다.
import numpy as np
def add(x, y):
"""
Add two numbers.
Parameters:
x (int): The first number.
y (int): The second number.
Returns:
int: The sum of x and y.
"""
return x + y

Utilizing Classes

  • 객체 지향 프로그래밍은 파이썬 개발의 핵심입니다. 클래스와 상속을 활용하여 Python 패키지를 사용자에게 더 강력한 도구로 만들 수 있습니다.
class Shape:
def __init__(self, color):
self.color = color
def get_color(self):
return self.color
class Square(Shape):
def __init__(self, color, side_length):
super().__init__(color)
self.side_length = side_length
def get_area(self):
return self.side_length ** 2

Maintainability

  • 텍스트 분석을 위한 완전한 기능을 갖춘 파이썬 패키지를 작성했습니다! 프로젝트를 가능한 한 쉽게 유지하려면 문서화 및 단위 테스트와 같은 개념에 대한 모범 사례를 활용하게 됩니다.

Documentation

  • 다음은 문서화에 대한 모범 사례를 소개합니다.

Good Comments

  • 좋은 주석은 코드를 이해하고 유지보수하기 위해 중요합니다.

Proper Docstrings

  • 적절한 독스트링은 각 함수의 목적과 사용 방법을 제공합니다.
def add(x, y):
"""
Add two numbers.
Parameters:
x (int): The first number.
y (int): The second number.
Returns:
int: The sum of x and y.
"""
return x + y

Readability Counts

  • 가독성은 코드 작성의 중요한 요소입니다.

Good Function Names

  • 좋은 함수 이름은 코드의 목적을 명확하게 전달합니다.

Good Variable Names

  • 좋은 변수 이름은 코드를 이해하기 쉽게 만듭니다.

Refactoring for Readability

  • 가독성을 위해 코드를 재구성해봅시다.

Unit Testing

  • 단위 테스트를 사용하여 함수의 동작을 확인할 수 있습니다.

Using doctest

  • doctest를 사용하여 함수의 예제 코드를 테스트할 수 있습니다.
import doctest
def add(x, y):
"""
Add two numbers.
Parameters:
x (int): The first number.
y (int): The second number.
Returns:
int: The sum of x and y.
Examples:
>>> add(2, 3)
5
>>> add(5, -1)
4
"""
return x + y
doctest.testmod()

Using pytest

  • pytest를 사용하여 함수를 테스트할 수 있습니다.

Documentation & Testing in Practice

  • 실제로 문서화와 테스트를 어떻게 활용하는지 알아봅시다.

Documenting Classes for Sphinx

  • Sphinx를 사용하여 클래스를 문서화합시다.

Identifying Tools

  • 사용 가능한 도구들을 알아봅시다.

Final Thoughts

  • 마지막으로 생각할 점들을 정리해보겠습니다.

Using doctest

  • doctest에 대해 배웠으므로, 자세한 예제 코드와 함께 함수를 최소한으로 테스트하는 간단한 방법을 살펴보겠습니다.
import doctest
def add(x, y):
"""
Add two numbers.
Parameters:
x (int): The first number.
y (int): The second number.
Returns:
int: The sum of x and y.
Examples:
>>> add(2, 3)
5
>>> add(5, -1)
4
"""
return x + y
doctest.testmod()

Exercise

  • doctest를 사용하여 함수의 예제 코드를 테스트하고 디버깅하는 실습을 진행해봅시다.

  • 다음은 환경에서 미리 로드된 doctest, Counter 및 text_analyzer입니다. 주의하세요, 당신의 문서 문자열은 정확히 솔루션과 일치해야 합니다. 몇 번이고 틀리게 된다면 예제 코드를 다시 살펴보고 처음부터 다시 시작하는 것이 좋습니다.

Instructions

  1. sum_counters의 독스트링 예제 코드를 완성하세요.
  2. 예상된 결과를 독스트링 예제에 채워넣으세요.
  3. doctest의 testmod 함수를 사용하여 함수의 예제 코드를 테스트하세요.
import doctest
def sum_counters(counters):
"""
Sum multiple Counter objects.
Parameters:
counters (list): A list of Counter objects.
Returns:
Counter: The sum of the Counter objects.
Examples:
>>> c1 = Counter(a=3, b=1)
>>> c2 = Counter(a=1, b=2)
>>> sum_counters([c1, c2])
Counter({'a': 4, 'b': 3})
"""
return sum(counters, Counter())
doctest.testmod()

Hint

  • 힌트: doctest의 testmod 함수를 사용하여 독스트링의 예제 코드를 테스트하세요.