腳本檔案
from uuid import uuid4
def get_unique_identifier(env, customer_id):
return env '-' customer_id '-' str(uuid4())[0:8]
test_A_script.py
import unittest
from unittest.mock import patch
import src.A_script as a_script
class MyTestCase(unittest.TestCase):
@patch('uuid.uuid4')
def test_get_unique_identifier(self, mock_uuid4):
mock_uuid4.return_value = 'abcd1234'
expected = 'test_env-test_cust-abcd1234'
unique_identifier = a_script.get_unique_identifier('test_env', 'test_cust')
self.assertEqual(expected, unique_identifier)
如何讓 uuid4 回傳“abcd1234”?
uj5u.com熱心網友回復:
您需要在使用它的模塊中模擬該方法。在您的情況下,您在模塊中使用它,A_script因此您必須patch使用'A_script.uuid4.
uj5u.com熱心網友回復:
您必須修補在您的 srcipt 中匯入的 uuid,因此更改
@patch('uuid.uuid4')
到
@patch('src.A_script.uuid4')
# or @patch('src.A_script.uuid4', return_value="abcd1234")
# or @patch('src.A_script.uuid4', new=lambda:"abcd1234")
在最后一種情況下,您根本不將模擬作為函式引數傳遞
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/370978.html
標籤:Python 单元测试 嘲笑 python-unittest 修补
