meherett
pytest-solidity
Python

PyTest plugin for testing smart contracts for Ethereum blockchain.

Last updated Dec 9, 2025
27
Stars
6
Forks
5
Issues
0
Stars/day
Attention Score
15
Language breakdown
No language data available.
Files click to expand
README

PyTest-Cobra PyPI - Python Version

PyTest plugin for testing Smart Contracts for Ethereum blockchain.

Build Status PyPI Version GitHub License Github Date PyPI Wheel Donate with Ethereum

Dependency

This library requires the solc executable to be present.

Only versions >=0.4.2 are supported and tested though this library may work with other versions.

solc installation instructions

Install Solidity compiler (solc) using Node Package Manager(npm)

npm install -g solc
or for Ubuntu(Linux)
sudo add-apt-repository ppa:ethereum/ethereum sudo apt-get update sudo apt-get install solc

Quickstart

Installation
pip install pytest-cobra

Development

Clone the repository and then run
pip install -e . -r requirements.txt

Usage

Execute your test suite

Example MetaCoin picture
# MetaCoin Testing

cobra is pytest fixture

def test_metacoin(cobra):

# Getting Contract Factory by name metacoin = cobra.contract('MetaCoin') # Getting Contract Instance of MetaCoin metacoin = metacoin.deploy()

assert metacoin.getBalance(cobra.accounts[0]) == 10000

Running test from Solidity file (.sol)

pytest --cobra MetaCoin.sol

Optional commands

Import path remappings
solc provides path aliasing allow you to have more reusable project configurations.
pytest --cobra MetaCoin.sol --import_remappings ["zeppeling=/my-zeppelin-checkout-folder"]
Allow paths
pytest --cobra MetaCoin.sol --allow_paths "/home/meheret,/user,/"

Running test from compiled Contracts Json file (.json)

Compile your contracts into a package (soon to be ethPM-compliant)

solc --combined-json abi,bin,bin-runtime contracts/ > MetaCoin.json
Testing Contracts.json
pytest --cobra MetaCoin.json

Running test from Yaml file (.yaml)

test:
  artifact_path: "./build/contracts/"
  test_paths: ["./tests"]
  contracts: [
    contract: {
        artifact: "Contract.json",
        links: ["Contract.json"]
    }
  ]

Further help

PyTest
Go check out the PyTest.

Author ✒️

Meheret Tesfaye - Initial work* - Cobra

License

This project is licensed under the MIT License - see the LICENSE file for details

© 2026 GitRepoTrend · meherett/pytest-solidity · Updated daily from GitHub