PyTest plugin for testing smart contracts for Ethereum blockchain.
PyTest-Cobra 
PyTest plugin for testing Smart Contracts for Ethereum blockchain.
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
Installationpip install pytest-cobra
Development
Clone the repository and then runpip 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