เราใช้Mockกับ python มาระยะหนึ่งแล้ว
ตอนนี้เรามีสถานการณ์ที่เราต้องการจำลองฟังก์ชั่น
def foo(self, my_param):
#do something here, assign something to my_result
return my_result
โดยปกติวิธีการเยาะเย้ยนี้จะเป็น (สมมติว่าเป็นส่วนหนึ่งของวัตถุ foo)
self.foo = MagicMock(return_value="mocked!")
แม้ว่าฉันจะโทรหา foo () สองครั้งฉันก็สามารถใช้ได้
self.foo = MagicMock(side_effect=["mocked once", "mocked twice!"])
ตอนนี้ฉันกำลังเผชิญสถานการณ์ที่ฉันต้องการคืนค่าคงที่เมื่อพารามิเตอร์อินพุตมีค่าเฉพาะ ถ้าสมมุติว่า "my_param" เท่ากับ "อะไรบางอย่าง" แล้วฉันต้องการคืน "my_cool_mock"
ดูเหมือนว่าจะมีให้ในmockito สำหรับไพ ธ อน
when(dummy).foo("something").thenReturn("my_cool_mock")
ฉันค้นหาวิธีการที่จะประสบความสำเร็จกับ Mock โดยไม่ประสบความสำเร็จได้อย่างไร
ความคิดใด ๆ
monkeypatch
สำหรับวัตถุประสงค์ดังกล่าวคุณอาจต้องการที่จะใช้ประโยชน์จาก Monkeypatch เป็นมากกว่าสำหรับ "แทนที่ฟังก์ชั่นนี้เพื่อประโยชน์ในการทดสอบ" ในขณะที่ Mock คือสิ่งที่คุณใช้เมื่อคุณต้องการตรวจสอบmock_calls
หรือยืนยันเกี่ยวกับสิ่งที่มันถูกเรียกด้วยเป็นต้น มีสถานที่สำหรับทั้งสองและฉันมักจะใช้ทั้งสองในเวลาที่แตกต่างกันในไฟล์ทดสอบที่กำหนด