유닛 테스터 구성
유닛 테스터 구성
테스트 러너(unittest)의 옵션을 설정하는 방법은 크게 세 가지가 있어요. 명령줄 인자, 구성 파일, 환경 변수예요. 각 방법과 가능한 모든 구성 옵션을 살펴볼게요.
출처: 문서
본문
유닛 테스터의 옵션을 설정하는 방법은 세 가지가 있어요.
- 명령줄 인자
- 구성 파일
- 환경 변수
- 구성 옵션 목록
전체 옵션 목록은 구성 옵션 목록에서 확인할 수 있어요.
명령줄 인자
사용 가능한 모든 옵션은 구성 옵션 목록에서 확인하세요.
# 불리언
unittest --checkpoint-on-shutdown
unittest --no-checkpoint-on-shutdown
# 기타 타입
unittest --checkpoint-wal-size 100000
명령줄 옵션 --settings, --on-init, --init-script는 DuckDB 구성을 지정하는 데 쓸 수 있어요.
구성 파일
--test-config로 전달할 수 있는 JSON 파일이에요. 사용 가능한 모든 옵션은 구성 옵션 목록에서 -를 _로 바꿔 확인하세요.
예시:
{
"checkpoint_wal_size": 100000,
"checkpoint_on_shutdown": "false"
}
구성 파일에서는 다음 추가 옵션도 사용할 수 있어요.
| 옵션 | 설명 |
|---|---|
extends |
확장할 구성 파일 목록 |
inherit_skip_tests |
'skip_tests'를 상속할 구성의 경로 |
skip_tests |
건너뛸 테스트 |
예시:
{
"extends": ["base_config.json"],
"inherit_skip_tests": "test/configs/force_storage.json",
"skip_tests": [
{
"reason": "메모리 카탈로그의 명시적 사용이 포함됨.",
"paths": [
"test/sql/attach/attach_use_rollback.test",
"test/sql/function/list/lambdas/arrow/warn_deprecated_arrow.test",
"test/sql/cte/warn_deprecated_union_in_using_key.test"
]
}
]
}
환경 변수
대부분의 구성 옵션은 DUCKDB_TEST_ 프리픽스를 붙이고 대문자로 밑줄로 변환한 환경 변수로도 설정할 수 있어요.
예시:
DUCKDB_TEST_CHECKPOINT_ON_SHUTDOWN=1 unittest
구성 옵션 목록
다음 구성 옵션들이 사용 가능해요.
| 옵션 | 설명 |
|---|---|
| `--autoloading <none | available |
--base-config <경로> |
로드해 초기 설정의 기반으로 삼을 구성 파일 |
--block-size <num> |
블록 할당 크기; 2의 거듭제곱이어야 함 |
--checkpoint-on-shutdown, --no-checkpoint-on-shutdown |
데이터베이스 종료 시 체크포인트 여부 |
--checkpoint-wal-size <num> |
자동 체크포인트를 트리거할 크기(바이트) |
--comment <문자열> |
추가 자유 형식 주석 줄 |
--data-dir <경로> |
테스트 데이터의 루트 디렉토리; 기본 WORKING_DIR/data. 상대 값은 테스트 cwd 기준으로 해석되고, 절대/원격(예: az://...) 값은 그대로 사용됨. |
| `--database-destroy <on | off |
--description <문자열> |
구성 설명 |
--emit-on-skip |
건너뛴 테스트마다 SKIP_TEST 마커 출력 |
--emit-test-events |
테스트 이벤트가 담긴 JSON을 stderr에 기록 |
--force-reload |
테스트 프레임워크 강제 재로드 |
--force-restart, --no-force-restart |
실행 사이 데이터베이스 강제 재시작 |
--force-storage |
영속 스토리지 파일로 테스트 |
--init-script <경로> |
init 시 실행할 SQL 스크립트 |
--initial-db <경로> |
초기 데이터베이스 경로 |
--keep-home |
샌드박스 temp-dir 홈 대신 $HOME/USERPROFILE 사용 |
--max-test-threads <num> |
테스트 러너 자체가 사용할 최대 스레드 수 (예: 동시 루프용) |
--max-threads <num> |
테스트 중 사용할 최대 스레드 수 |
--on-cleanup <문자열> |
테스트 종료 시 실행할 SQL 문 |
--on-init <문자열> |
init 시 실행할 SQL 문 |
--on-load <문자열> |
명시적 로드 시 실행할 SQL 문 |
--on-new-connection <문자열> |
연결 시 실행할 SQL 문 |
--one-initialize |
버퍼를 모두 1로 초기화; --zero-initialize도 참고 |
--require <확장_이름> |
확장이 없으면: 그 확장이 필요한 테스트를 건너뛰지 말고 실패 |
| `--run-id <'auto' | <문자열>>` |
--select-tag <문자열> |
명명된 태그와 일치하는 테스트 선택 (단일 집합으로; 여러 집합은 OR로 결합) |
--select-tag-set <쉼표 구분 문자열> |
모든 명명된 태그와 일치하는 테스트 선택 (여러 집합은 OR로 결합) |
--settings <list[struct]> |
DuckDB 구성 설정, struct는 name과 value 키를 가져야 함 |
--skip-compiled, --no-skip-compiled |
컴파일된 테스트 건너뛰기 |
--skip-error-messages <쉼표 구분 문자열> |
이 하위 문자열 중 하나를 포함하는 메시지로 실패하는 테스트를 실패가 아닌 건너뛰기 |
--skip-tag <문자열> |
명명된 태그와 일치하는 테스트 건너뛰기 (단일 집합으로; 여러 집합은 OR로 결합) |
--skip-tag-set <쉼표 구분 문자열> |
모든 명명된 태그와 일치하는 테스트 건너뛰기 (여러 집합은 OR로 결합) |
| `--sort-style <none | rowsort |
--statically-loaded-extensions <쉼표 구분 문자열> |
로드할 확장 (정적으로 사용 가능한 것들 중에서) |
--stdin |
stdin에서 단일 sqllogictest 스크립트 읽기 |
--storage-fuzzer, --no-storage-fuzzer |
storage fuzzer 테스트 실행 |
--storage-version <문자열> |
기본으로 사용할 데이터베이스 스토리지 버전 |
--summarize-failures, --no-summarize-failures |
실행 후 모든 테스트 실패 요약 출력 |
--temp-dir-base <경로> |
temp-dir 트리의 루트 덮어쓰기; 로컬 또는 원격(예: s3://)일 수 있음 |
| `--temp-dir-create <never | on-absent |
| `--temp-dir-destroy <never | on-success |
| `--temp-dir-run-id <on | off>` |
| `--temp-dir-test-id <on | off>` |
--test-config <경로> |
구성 파일 경로 |
--test-dir <경로> |
테스트 러너의 기본 작업 디렉토리 덮어쓰기, 테스트에서 {WORKING_DIRECTORY}로 사용 가능 |
--test-env <list[struct]> |
테스트 변수, struct는 env_name과 env_value 키를 가져야 함 |
--test-memory-leaks, --no-test-memory-leaks |
메모리 누수 테스트 실행 |
--verify-vector <문자열> |
특정 벡터 타입에 대한 벡터 검증 실행 (옵션: dictionary_expression, dictionary_operator, constant_operator, sequence_operator, nested_shuffle, variant_vector) |
--zero-initialize |
버퍼를 모두 0으로 초기화; --one-initialize도 참고 |
더 알아보기 (Learn more)
- 결과 검증 문법은
dev/sqllogictest/result_verification문서를 참고해 주세요.