Getting Started: Filling Tests¶
This guide describes how to get started with fill and commonly-used command-line options.
-
Explore test cases via
--collect-onlyand search for test cases that combinePUSH0andDELEGATECALLin the EVM functionality introduced in the Shanghai hard fork:uv run fill --collect-only -k "push0 and delegatecall" tests/shanghai/The
fillcommand is based onpytest. The above command uses the optional pytest arguments:--collect-onlyonly collect test cases; don't execute them.-k <expression>filter test cases by their test case ID based on the given expression.tests/shanghaithe directory containing the test cases (tellsfillto only discover test cases in this directory; default:tests/).
-
Fill
state_testfixtures for these test cases:uv run fill -k "push0 and delegatecall" tests/shanghai/ -m state_test -vwhere:
-m state_testonly fills test cases marked as astate_test(see all available markers viauv run fill --markers).-venables verbose output.
-
Verify the generated fixtures:
a. Check the corresponding fixture file has been generated:
head fixtures/state_tests/shanghai/eip3855_push0/push0/push0_contract_during_call_contexts.jsonb. Open the generated HTML test using the link provided at the bottom of the console output. This is written to the output directory at:
./fixtures/.meta/report_fill.html
Next Steps¶
- Learn useful command-line flags.
- Execute tests for features under development via the
--forkflag. - Optional: Configure VS Code to auto-format Python code and execute tests within VS Code.
- Implement a new test case, see Writing Tests.

