npx skills add ...
npx skills add microsoft/onnxruntime --skill ort-test
npx skills add microsoft/onnxruntime --skill ort-test
Run ONNX Runtime tests. Use this skill when asked to run tests, debug test failures, or find and execute specific test cases in ONNX Runtime.
ONNX Runtime uses Google Test for C++ and unittest (preferred) / pytest for Python.
| Executable | What it tests |
|---|---|
onnxruntime_test_all | Core framework, graph, optimizer, session tests |
onnxruntime_provider_test | Operator/kernel tests (Conv, MatMul, etc.) across execution providers |
attention_op_test.cc files — don't confuse themThere are two same-named files testing different operators. Both build into
onnxruntime_provider_test:
| Path | Operator | gtest suite |
|---|---|---|
test/providers/cpu/llm/attention_op_test.cc | ONNX-domain Attention (opset 23/24) | AttentionTest.* |
test/contrib_ops/attention_op_test.cc | contrib MultiHeadAttention / GroupQueryAttention | ContribOpAttentionTest.* |
The MEA negative-offset regression tests (Attention_Causal_NonPadKVSeqLen_MEA_*,
e.g. ..._MEA_NegOffset_ForceFlashDisabled_FP16_CUDA) live in the providers/cpu/llm file —
the ONNX-domain op.
Use --gtest_filter to select specific tests:
Always run from the build output directory — tests may fail to find dependencies otherwise.
You can also run all tests via the build script (assumes a prior successful build):
The default path follows the pattern build/<Platform>/<Config>/ where Platform is Linux, MacOS, or Windows. With Visual Studio multi-config generators on Windows, the config may appear twice (e.g., build/Windows/Release/Release/). The path can also be customized via --build_dir.
If you can't find a test binary, search for it:
Use pytest as the test runner:
Python test naming convention: test_<method>_<expected_behavior>_[when_<condition>]
AGENTS.md.> test_output.txt 2>&1) — output can be large.--gtest_filter to run a targeted subset when the full suite takes too long.onnxruntime_provider_test and can run against a software Vulkan adapter (Mesa lavapipe). See the webgpu-local-testing skill.A green result is not always a real pass. Watch for all five modes:
--gtest_filter that matches no tests still exits 0 (green).
Confirm the [==========] N tests ran line is non-zero — a zero-match run prints
0 tests from 0 test suites. Many operator/kernel gtests run only in
onnxruntime_provider_test (CI runs this), NOT onnxruntime_test_all; the wrong
binary matches nothing and looks green.cutlass_fmha/*.h): see
the cuda-cutlass-fmha-incremental-rebuild skill.libonnxruntime_providers_cuda.so), the test executable is NOT relinked when the provider
recompiles — its mtime stays old while the .so advances. Verify the artifact that
actually links your change, not the test exe. Detail: cuda-cutlass-fmha-incremental-rebuild
skill.CUDA failure 1: invalid argument —
and a path with no fallback (e.g. ORT's MEA) turns that into a hard error, not a silent
degrade. So a green run on your local GPU can mask a launch failure on CI's arch. Verify
arch-portability, or pick a config whose shared-memory footprint fits every target arch
(e.g. a small head_size). Concrete instance: CUTLASS MEA head_size=512 FP16 exceeds
sm86's smem opt-in cap and dies at launch — live bug #28388 (the
cuda-attention-kernel-patterns skill §1 has the dispatch detail).Value equality alone does not prove the intended code path ran — a correct fallback can produce the right answer (false-green mode 4 above). When a test targets a specific kernel/path, confirm it actually dispatched there instead of trusting the output:
core/providers/cuda/llm/attention.cc):
ONNX Attention: using Flash Attention (:1400)ONNX Attention: using Memory Efficient Attention (:1451)Attention: using unified unfused path (:1482) — note: no ONNX prefix and it
reads "unified unfused path", not "Unfused".SKIP_IF_MEA_NOT_COMPILED.Operator-specific routing/forcing details: cuda-attention-kernel-patterns skill §1/§7.
./build.sh --config Release --test
.\build.bat --config Release --test # Windows# Windows
Get-ChildItem -Path build -Recurse -Filter "onnxruntime_provider_test.exe" | Select-Object -ExpandProperty FullName
# Linux/macOS
find build -name "onnxruntime_provider_test" -type fpytest onnxruntime/test/python/test_specific.py # entire file
pytest onnxruntime/test/python/test_specific.py::TestClass::test_method # specific test
pytest -k "test_keyword" onnxruntime/test/python/ # by keyword