簡體   English   中英

模擬函數根據傳遞的參數返回不同的值

[英]Mock function to return different value based on argument passed

在我的測試函數中,我的模擬行為不正常,因為當我mock我的get_config函數時,我只知道如何模擬它以返回一個值。 如何在我的mock中添加一些邏輯,以便模擬僅在get_config傳遞"restricted"參數時返回不同的值

def func():
    conf1 = get_config("conf1")
    conf2 = get_config("conf2")
    conf3 = get_config("conf3")
    restricted_datasets = get_config("restricted")
    dataset = get_config("dataset")
    if dataset not in restricted_datas:
        return run_code()

您可以按照官方文檔中的說明將函數分配給side_effect

from unittest.mock import Mock

def side_effect(value):
    return value

m = Mock(side_effect=side_effect)
m('restricted')
'restricted'
class Ctx():
  def get_config(confName):
    return confName

def mock_get_config(value):
  if value == "conf1":
    return "confA"
  elif value == "conf2":
    return "confB"
  else:
    return "UnknownValue"

class CtxSourceFileTrial(unittest.TestCase):
  def test(self):
    mockCtx = Mock()
    mockCtx.get_config.side_effect = mock_get_config
    self.assertEqual("confA", mockCtx.get_config("conf1"))
    self.assertEqual("confB", mockCtx.get_config("conf2"))

#
# By the way I think Python is EXTREMELY screwy, Adligo
#

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM