-
Notifications
You must be signed in to change notification settings - Fork 20
Expand file tree
/
Copy pathpytest.ini
More file actions
159 lines (147 loc) · 6.52 KB
/
Copy pathpytest.ini
File metadata and controls
159 lines (147 loc) · 6.52 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
[pytest]
# Pytest configuration for NeMo Platform
# This is the root configuration that applies to all Python tests in the repository
# Python files and directories to search for tests
python_files = test_*.py *_test.py
python_classes = Test*
python_functions = test_*
pythonpath =
.
agents/nemo-studio-assistant/src
plugins/example-plugin/src
plugins/nemo-deployments/src
plugins/nemo-deployments/tests/unit
plugins/nemo-deployments/tests/integration
plugins/nemo-iron-swarm/tests/unit
plugins/nemo-safe-synthesizer/src
services/core/jobs/tests/controllers
services/core/models/tests/unit
# Test discovery paths - packages and stable services
# Option A: Centralized Testing - All tests runnable from root
#
# Note: Infrastructure services had namespace conflicts (testpaths = ["tests"] in their pyproject.toml)
# These have been fixed by commenting out those testpaths settings.
#
# Excluded (with import errors - need investigation):
# - packages/nemo_nb/tests (3 collection errors)
# - Some core/infrastructure tests (module dependencies)
testpaths =
agents/nemo-studio-assistant/tests
packages/nemo_platform_plugin/tests
packages/nmp_platform/tests
packages/nmp_platform_runner/tests
plugins/*/tests
packages/data_designer_nemo/tests
packages/models/tests
packages/nemo_evaluator_sdk/tests
packages/nemo_platform_ext/tests
packages/nmp_common/tests
plugins/example-plugin/tests
plugins/nemo-guardrails/tests
services/core/auth/tests
services/core/entities/tests
services/core/files/tests
services/core/inference-gateway/tests
services/core/jobs/tests
services/core/models/tests
services/core/secrets/tests
services/core/tests
services/data-designer/tests
services/guardrails/tests
services/hello-world/tests
services/intake/tests
services/platform-seed/tests
services/safe-synthesizer-api/tests
docs/_scripts
docs/fern/scripts
tests/auth
tests/integration
tests/unit
# Markers for different test categories
# Usage: @pytest.mark.<marker_name>
markers =
integration: Service integration tests - test individual service interfaces and interactions (uses ASGI, mocks external services via SDK)
gpu_integration: GPU integration tests - test individual services that utilize AI dependencies/ a GPU
smoke_gpu_tasks: Import smoke tests for the nmp-gpu-tasks image
smoke_nmp_customizer_tasks: Import smoke tests for the nmp-customizer-tasks image
smoke_nmp_automodel_training: Import smoke tests for the nmp-automodel-training image
e2e: End-to-end tests - test complete customer workflows on deployed infrastructure (Helm/Docker Compose)
gym_e2e: Gym agent-evaluate E2E tests that require the dedicated nmp-gym-tasks image
auth_idp: Auth IdP e2e tests - provider-backed auth compose coverage through the gateway
auth_idp_runtime: Auth IdP tests that require a provider runtime; optional marker args list matching runtime ids
auth_idp_docker: Auth IdP tests for the Docker Compose reference deployment
auth_idp_k8s: Auth IdP tests for the Kubernetes Helm reference deployment
e2e_config(*layers, harness=...): Ordered list of repo-root-relative config paths and/or inline dict overlays; harness config stays separate from platform config
subprocess_only: Test only works in subprocess mode (not on Kubernetes); skipped when NMP_BASE_URL is set
container_only: Test requires a container backend (Docker or Kubernetes); skipped unless NMP_BASE_URL is set
needs_nmp_api_image: Test runs on the subprocess harness with a Docker deployments executor and needs the nmp-api image available as the deployment image; skipped unless NMP_E2E_PLATFORM_IMAGE is set (its own CI job builds/pulls the image and sets it)
requires_gpu: Container e2e requiring GPU job scheduling; skipped unless --feature gpu is passed
regression: Regression tests - test individual functional microservices for baseline functionality
infrastructure: Infrastructure tests - ensure services are compatible with customer infrastructure
canary: Canary tests - test deployed integration environments like top of tree
slow: Tests that take a long time to run
external_network: Tests requiring outbound network access; disabled unless --run-external-network is set
skip_in_ci: Tests that should be skipped in CI environment
unit: Unit tests - test single classes/functions with no infrastructure dependencies
unit_test: Legacy marker for unit tests (deprecated, use 'unit' instead)
noautouse: Marker to skip autouse fixtures for specific tests
flaky: Mark a test as flaky (infrastructure-sensitive); retried up to N times before counting as failed
nss_clinc_oos: Marker for Safe Synthesizer-Clinc OOS dataset tests
nss_dow_jones_index: Marker for Safe Synthesizer-Dow Jones Index dataset tests
# Note: Unit tests (testing single classes/functions with no infrastructure dependencies)
# do not need markers and are the default test type.
# Asyncio configuration
asyncio_default_fixture_loop_scope = function
asyncio_mode = auto
# Output options
addopts =
--verbose
--strict-markers
--tb=short
-W ignore::UserWarning:pytest_only.version
# Coverage options (can be overridden by command line)
--cov-report=html
--cov-report=term-missing
--cov-report=xml
# Show test durations for slowest tests
-ra
# Minimum Python version
minversion = 8.0
# Test timeout (in seconds) - can be overridden per test with @pytest.mark.timeout
# Helps catch hanging tests
timeout = 600
timeout_method = thread
# Log configuration
log_cli = false
log_cli_level = INFO
log_cli_format = %(asctime)s [%(levelname)8s] %(message)s
log_cli_date_format = %Y-%m-%d %H:%M:%S
log_file_format = %(asctime)s [%(levelname)8s] %(name)s:%(lineno)d %(message)s
log_file_date_format = %Y-%m-%d %H:%M:%S
# Filter warnings
filterwarnings =
ignore::DeprecationWarning
ignore::PendingDeprecationWarning
ignore::UserWarning:pytest_only.version
ignore:pkg_resources is deprecated:UserWarning:pymilvus
# nvidia-ml-py warns when code (e.g. torch) does "import pynvml"; we already use nvidia-ml-py
ignore:The pynvml package is deprecated:FutureWarning
# Environment variables for tests
# TODO(RL): This seems super flaky that we require this 'development' environment variable
env =
MODE=development
# Paths to ignore during test collection
norecursedirs =
.git
.tox
.eggs
notebooks
dist
build
.venv
__pycache__
*.egg-info
.uv_cache
node_modules
.github
.gitlab