브라우니는 단위 테스트를 위해 pytest
프레임워크를 사용합니다. Pytest는 성숙하고 기능이 풍부한 테스트 프레임워크입니다. 최소한의 코드로 작은 테스트를 작성할 수 있으며 대규모 프로젝트에 확장성이 뛰어납니다.
테스트를 실행하려면:
$ brownie test
이 문서에서는 기본 pytest 사용 방법을 간단하게 설명하며, 특히 Brownie와 관련된 기능에 중점을 둡니다. pytest의 많은 구성 요소는 부분적으로 또는 전혀 설명되지 않았습니다. pytest에 대해 더 자세히 알고 싶다면 공식 pytest 문서를 참조해야합니다 (https://docs.pytest.org/en/latest/).
Pytest는 프로젝트의 테스트 스위트에 포함해야하는 함수를 찾기 위해 test discovery 프로세스를 수행합니다.
테스트 파일 내에서 다음 메서드가 테스트로 실행됩니다.
다음은 Brownie 및 pytest를 사용하여 계정 잔액이 거래를 수행한 후 올바르게 변경되었는지 확인하는 매우 간단한 테스트 예입니다.
from **brownie** import accounts
def test_account_balance():
balance = accounts[0].balance()
accounts[0].transfer(accounts[1], "10 ether", gas_price=0)
assert balance - "10 ether" == accounts[0].balance()
픽스처는 하나 이상의 테스트 함수에 적용되는 함수로, 각 테스트 실행 전에 호출됩니다. 픽스처는 테스트에 필요한 초기 조건을 설정하는 데 사용됩니다.
픽스처는 @pytest.fixture
데코레이터를 사용하여 선언됩니다. 테스트에 픽스처를 전달하려면, 테스트의 입력 인수로 픽스처 이름을 포함하면 됩니다:
import **pytest**
from **brownie** import Token, accounts
**@pytest**.fixture
def token():
return accounts[0].deploy(Token, "Test Token", "TST", 18, 1000)
def test_transfer(token):
token.transfer(accounts[1], 100, {'from': accounts[0]})
assert token.balanceOf(accounts[0]) == 900
이 예제에서는 token
픽스처가 test_transfer
를 실행하기 전에 호출됩니다. 픽스처는 배포된 Contract
인스턴스를 반환하며 이것은 테스트에서 사용됩니다.