Brownie is a Python-based development and testing framework for smart contracts targeting the Ethereum Virtual Machine.


All code starting with $ is meant to be run on your terminal. Code starting with >>> is meant to run inside the Brownie console.


This project relies heavily upon and the documentation assumes a basic familiarity with it. You may wish to view the docs if you have not used it previously.


  • Full support for Solidity and Vyper
  • Contract testing via pytest, including trace-based coverage evaluation
  • Property-based and stateful testing via hypothesis
  • Powerful debugging tools, including python-style tracebacks and custom error strings
  • Built-in console for quick project interaction
  • Support for ethPM packages