Revert-Opcode

如何使用 Brownie 擷取“revert()”錯誤?

  • June 14, 2020

我正在使用Brownie開發我的智能合約,這有助於我引入智能合約,請參閱doc

當我的電話Example.greet()有什麼方法可以在我的測試期間返回錯誤消息並根據它採取行動?還要找出它是否因為交易沒有氣體而被恢復。

松露也回答了類似的問題:$$ how to catch “revert” error in truffle test javascript? $$.


帶有revert()消息的簡單合約範例:

contract Example{
   function greet(){
       revert("Hello World");        
   }
}

brownie.reverts上下文管理器正好處理這個案例。語法非常類似於pytest.raises

import brownie

def test_greet(example):
   with brownie.reverts("Hello World"):
        example.greet()

包含錯誤字元串是可選的,如果省略它,無論返回的消息如何,都可以擷取任何還原。

引用自:https://ethereum.stackexchange.com/questions/84253