Helm Unit Testing¶
Overview¶
Helm unit tests provide a way to test Helm chart templates without deploying to a Kubernetes cluster. Big Bang uses the helm-unittest plugin to validate that Helm templates render correctly under various conditions and configurations.
Unlike Helm Chart Tests (which deploy pods to a live cluster and test runtime behavior), helm unit tests validate template rendering logic, schema validation, and expected output structure before any actual deployment occurs.
Prerequisites¶
Install Helm Unittest Plugin¶
The helm unittest plugin must be installed to run tests:
helm plugin install https://github.com/helm-unittest/helm-unittest
Note on Test Directory Location: The Helm unittest plugin conventionally looks for tests in chart/tests/, but Big Bang places unit tests in chart/unittests/ to avoid confusion with existing end-to-end (e2e) Helm Chart Tests that run in live Kubernetes clusters. This separation keeps unit tests (which validate template rendering) distinct from runtime integration tests.
Running Tests¶
Run All Tests¶
To run all unit tests in the Big Bang chart:
helm unittest chart -f "unittests/**/*_test.yaml"
Run Specific Test Suites¶
You can run specific test files or directories:
# Run schema validation tests only
helm unittest chart -f "unittests/schema/*_test.yaml"
# Run a specific test file
helm unittest chart -f "unittests/schema/umbrella_test.yaml"
# Run template helper tests
helm unittest chart -f "unittests/template:*_test.yaml"
Debugging Tests¶
To enable verbose output and view the rendered YAML templates during test execution, use the -d flag:
helm unittest chart -f "unittests/**/*_test.yaml" -d
When the -d (or --debugPlugin) flag is enabled, helm unittest creates a .debug/ directory containing the rendered YAML output for each template processed during the tests. This is useful for:
- Inspecting the actual rendered templates to understand test failures
- Verifying that your Helm values produce the expected template output
- Debugging complex template logic and conditionals
Test Organization¶
Big Bang organizes helm unit tests into several categories:
Schema Validation Tests¶
Located in chart/unittests/schema/, these tests validate that the Helm chart’s values conform to the expected schema.
Example: Valid Configuration¶
suite: Schema Validation - Git Configuration
tests:
- it: should pass validation with git credentials
set:
git:
credentials:
username: "myuser"
password: "mypassword"
asserts:
- notFailedTemplate: {}
Example: Invalid Configuration¶
suite: Schema Validation - Git Configuration
tests:
- it: should fail validation with username but no password
set:
git:
credentials:
username: "myuser"
password: null
asserts:
- failedTemplate:
errorPattern: ".*password.*"
Template Helper Tests¶
Located in chart/unittests/, these tests validate custom Helm template functions defined in _helpers.tpl.
Template helper tests ensure that custom template functions produce correct output across various input scenarios. For detailed information on Big Bang’s template self-testing framework and how to write tests for custom template helpers, see the Template Self-testing Guide.
Package-Specific Tests¶
Located in chart/unittests/packages/, these tests validate that package-specific templates render correctly for individual packages.