2016-01-17 56 views
1

在C#中,我可以使用Moq來創建模擬對象,我可以使用它來檢查是否調用了某個對象。在這個例子中,我將檢查MyModelClass.Bar()函數調用IMyInterface.Foo()至少一次:使用pytest如何檢查py.test中的行爲?

[TestMethod] 
public void TestBar() { 
    var mock = new Mock<IMyInterface>(); 
    var systemUnderTest = new MyModelClass(mock.Object); 
    systemUnderTest.Bar(); 

    // Let the test fail, if Foo() was not called at least once 
    mock.Verify(x => x.Foo(), Times.AtLeastOnce()); 
} 

編程Python中,什麼是達到同樣的最佳方式?或者我應該使用其他測試框架來處理類似的事情嗎?

回答

0

我剛剛發現Mock,測試庫,它做什麼,我想:

from mock import Mock 

def test_bar(): 
    mock = Mock() 
    system_under_test = MyModelClass(mock) 
    system_under_test.bar() 
    mock.foo.assert_called_once_with() 
+1

...你可以看看到https://docs.python.org/3/library/unittest。 mock.html#autospeccing模仿界面。通過相同的框架,您可以通過mocks補丁存在的實現。您可以在SO上找到關於此主題的大量QA :) –

+1

請注意,還有[pytest-mock](https://github.com/pytest-dev/pytest-mock),這使得使用mock更容易,例如在每次測試後都要照顧他們的重置。 –