Chúng tôi đã sử dụng Mock cho python một thời gian.
Bây giờ, chúng ta có một tình huống trong đó chúng ta muốn mô phỏng một hàm
def foo(self, my_param):
#do something here, assign something to my_result
return my_result
Thông thường, cách để chế giễu điều này sẽ là (giả sử foo là một phần của một đối tượng)
self.foo = MagicMock(return_value="mocked!")
Thậm chí, nếu tôi gọi foo () một vài lần tôi có thể sử dụng
self.foo = MagicMock(side_effect=["mocked once", "mocked twice!"])
Bây giờ, tôi đang phải đối mặt với một tình huống trong đó tôi muốn trả về một giá trị cố định khi tham số đầu vào có một giá trị cụ thể. Vì vậy, nếu chúng ta nói "my_param" bằng "cái gì đó" thì tôi muốn trả về "my_cool_mock"
Điều này dường như có sẵn trên mockito cho python
when(dummy).foo("something").thenReturn("my_cool_mock")
Tôi đã tìm kiếm làm thế nào để đạt được điều tương tự với Mock mà không thành công?
Có ý kiến gì không?
monkeypatch
. Monkeypatch dành cho "thay thế chức năng này để thử nghiệm", trong khi Mock là những gì bạn sử dụng khi bạn cũng muốn kiểm tra mock_calls
hoặc đưa ra các xác nhận về những gì nó được gọi và v.v. Có một nơi dành cho cả hai và tôi thường sử dụng cả hai vào những thời điểm khác nhau trong một tệp kiểm tra nhất định.