คำถามติดแท็ก python-mock

1
Python จำลองค่าที่ส่งคืนหลายค่า
ฉันใช้ pythons mock.patch และต้องการเปลี่ยนค่าตอบแทนสำหรับการโทรแต่ละครั้ง นี่คือข้อแม้: ฟังก์ชันที่กำลังแก้ไขไม่มีอินพุตดังนั้นฉันจึงไม่สามารถเปลี่ยนค่าส่งคืนตามอินพุตได้ นี่คือรหัสของฉันสำหรับการอ้างอิง def get_boolean_response(): response = io.prompt('y/n').lower() while response not in ('y', 'n', 'yes', 'no'): io.echo('Not a valid input. Try again']) response = io.prompt('y/n').lower() return response in ('y', 'yes') รหัสทดสอบของฉัน: @mock.patch('io') def test_get_boolean_response(self, mock_io): #setup mock_io.prompt.return_value = ['x','y'] result = operations.get_boolean_response() #test self.assertTrue(result) self.assertEqual(mock_io.prompt.call_count, 2) …

6
ยืนยันว่าฟังก์ชัน / วิธีการไม่ได้ถูกเรียกโดยใช้ Mock
ฉันใช้ไลบรารีจำลองเพื่อทดสอบแอปพลิเคชันของฉัน แต่ฉันต้องการยืนยันว่าไม่ได้เรียกใช้ฟังก์ชันบางอย่าง เอกสารจำลองพูดคุยเกี่ยวกับวิธีการเช่นmock.assert_called_withและmock.assert_called_once_withแต่ฉันไม่พบอะไรที่เหมือนmock.assert_not_calledหรือสิ่งที่เกี่ยวข้องกับการตรวจสอบการเยาะเย้ยถูกไม่ได้เรียกว่า ฉันสามารถไปกับสิ่งต่อไปนี้แม้ว่ามันจะดูไม่เท่หรือไม่พีโธนิก: def test_something: # some actions with patch('something') as my_var: try: # args are not important. func should never be called in this test my_var.assert_called_with(some, args) except AssertionError: pass # this error being raised means it's ok # other stuff มีความคิดอย่างไรที่จะทำสิ่งนี้ให้สำเร็จ?

2
Python Mocking ฟังก์ชันจากโมดูลที่นำเข้า
ฉันต้องการเข้าใจวิธี@patchการทำงานจากโมดูลที่นำเข้า นี่คือที่ที่ฉันมาไกลมาก app / mocking.py: from app.my_module import get_user_name def test_method(): return get_user_name() if __name__ == "__main__": print "Starting Program..." test_method() app / my_module / __ init__.py: def get_user_name(): return "Unmocked User" การทดสอบ / mock-test.py: import unittest from app.mocking import test_method def mock_get_user(): return "Mocked This Silly" @patch('app.my_module.get_user_name') class MockingTestTestCase(unittest.TestCase): …

1
การจำลองฟังก์ชันเพื่อเพิ่มข้อยกเว้นเพื่อทดสอบบล็อกยกเว้น
ฉันมีฟังก์ชัน ( foo) ซึ่งเรียกใช้ฟังก์ชันอื่น ( bar) หากเรียกใช้การbar()เพิ่มHttpErrorฉันต้องการจัดการเป็นพิเศษหากรหัสสถานะคือ 404 มิฉะนั้นจะเพิ่มอีกครั้ง ฉันพยายามที่จะเขียนทดสอบหน่วยบางรอบนี้ฟังก์ชั่นการเยาะเย้ยออกมาเรียกร้องให้foo bar()น่าเสียดายที่ฉันไม่สามารถรับการเรียกร้องที่เยาะเย้ยbar()ให้เพิ่มข้อยกเว้นซึ่งถูกexceptบล็อกของฉันได้ นี่คือรหัสของฉันที่แสดงถึงปัญหาของฉัน: import unittest import mock from apiclient.errors import HttpError class FooTests(unittest.TestCase): @mock.patch('my_tests.bar') def test_foo_shouldReturnResultOfBar_whenBarSucceeds(self, barMock): barMock.return_value = True result = foo() self.assertTrue(result) # passes @mock.patch('my_tests.bar') def test_foo_shouldReturnNone_whenBarRaiseHttpError404(self, barMock): barMock.side_effect = HttpError(mock.Mock(return_value={'status': 404}), 'not found') result = foo() self.assertIsNone(result) # …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.