Skip to main content

자동화 테스트

단위 테스트를 작성하기 위한 파일 특정 지침입니다.

참고 항목

  • 이 라이브러리의 예시는 영감을 얻기 위한 것입니다. 프로젝트, 언어, 팀 프로세스에 더 구체적으로 맞게 조정하는 것이 좋습니다.
  • 특정 언어 및 시나리오에 대한 사용자 지정 지침의 커뮤니티 기여 예시는 우수한 GitHub Copilot 사용자 지정 리포지토리를 참조하세요.
  • 사용자 지정 지침을 만드는 플랫폼 또는 IDE에 따라 다양한 범위에서 사용자 지정 지침을 적용할 수 있습니다. 자세한 내용은 "GitHub Copilot Chat 응답 사용자 지정 정보"을(를) 참조하세요.

이 예시에서는 applyTo 필드를 사용하여 리포지토리의 Python 테스트 파일에만 적용되는 경로 특정 python-tests.instructions.md 파일을 보여 줍니다. 경로 특정 지침 파일에 대한 자세한 내용은 GitHub Copilot에 대한 리포지토리 사용자 지정 지침 추가을(를) 참조하세요.

Text
---
applyTo: "tests/**/*.py"
---

When writing Python tests:

## Test Structure Essentials
- Use pytest as the primary testing framework
- Follow AAA pattern: Arrange, Act, Assert
- Write descriptive test names that explain the behavior being tested
- Keep tests focused on one specific behavior

## Key Testing Practices
- Use pytest fixtures for setup and teardown
- Mock external dependencies (databases, APIs, file operations)
- Use parameterized tests for testing multiple similar scenarios
- Test edge cases and error conditions, not just happy paths

## Example Test Pattern
```python
import pytest
from unittest.mock import Mock, patch

class TestUserService:
    @pytest.fixture
    def user_service(self):
        return UserService()
    
    @pytest.mark.parametrize("invalid_email", ["", "invalid", "@test.com"])
    def test_should_reject_invalid_emails(self, user_service, invalid_email):
        with pytest.raises(ValueError, match="Invalid email"):
            user_service.create_user({"email": invalid_email})
    
    @patch('src.user_service.email_validator')
    def test_should_handle_validation_failure(self, mock_validator, user_service):
        mock_validator.validate.side_effect = ConnectionError()
        
        with pytest.raises(ConnectionError):
            user_service.create_user({"email": "[email protected]"})
```