注意
- The examples in this library are intended for inspiration—you are encouraged to adjust them to be more specific to your projects, languages, and team processes.
- For community-contributed examples of custom instructions for specific languages and scenarios, see the Awesome GitHub Copilot Customizations repository.
- You can apply custom instructions across different scopes, depending on the platform or IDE where you are creating them. For more information, see "关于自定义 GitHub Copilot 聊天助手响应."
此示例使用 applyTo
字段显示了特定于路径的 python-tests.instructions.md
文件,该文件仅适用于仓库中的 Python 测试文件。 有关特定于路径的说明文件的详细信息,请参阅 为 GitHub Copilot 添加存储库自定义说明。
--- 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": "test@example.com"}) ```
---
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": "test@example.com"})
```