Testing a Contract¶
The following example demonstrates how to compile and deploy your vyper contract.
pyethereum>=2.0.0 for the
from vyper import compiler from ethereum.tools import tester # Get a new chain chain = tester.Chain() # Set the vyper compiler to run when the vyper language is requested tester.languages['vyper'] = compiler.Compiler() with open('my_contract.vy' 'r') as f: source_code = f.read() # Compile and Deploy contract to provisioned testchain # (e.g. run __init__ method) with given args (e.g. init_args) # from msg.sender = t.k1 (private key of address 1 in test acconuts) # and supply 1000 wei to the contract init_args = ['arg1', 'arg2', 3] contract = chain.contract(source_code, language="vyper", init_args, sender=t.k1, value=1000) contract.myMethod() # Executes myMethod on the tester "chain" chain.mine() # Mines the above transaction (and any before it) into a block
Note: We are working on integration with ethereum-tester, so this example will change.
Testing Using vyper-run Command¶
To allow quickly testing contracts, Vyper provides a command line tool for instantly executing a function:
vyper-run yourFileName.vy "yourFunction();" -i some_init_param, another_init_param
The vyper-run command is composed of 4 parts:
- the name of the contract file you want to execute (for example: coolContract.vy)
- a string (wrapped in double quotes) with the function you want to trigger, you can trigger multiple functions by adding a semicolon at the end of each function and then call the next function (for example:
- (Optional) the parameters for the
__init__function of the contract (for example: given
__init__(a: int128, b: int128)the syntax would be
Putting it all together:
vyper-run myContract.vy "myFunction1();myFunction2()" -i 1,3
The vyper-run command will print out the returned value of the called functions as well as all the logged events emitted during the function’s execution.
Deploying a Contract¶
You have several options to deploy a Vyper contract to the public testnets.
One option is to take the bytecode generated by the vyper compiler and manually deploy it through mist or geth:
vyper yourFileName.vy # returns bytecode
Or deploy it with current browser on myetherwallet contract menu.