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


Brownie is no longer actively maintained. Future releases may come sporadically - or never at all. Check out Ape Framework for all your python Ethereum development needs.


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