在 python 中从函数的外部作用域模拟资源

Mocking a resource from outerscope of a function in python

我有一个使用字典的函数,由该函数构造而成,并执行某些操作。函数是这样的:

TRANSLATION_TABLE = {#something}

def get_translate(tokens_and_tags):
results = []
for token, tag in tokens_and_tags:
    results.append((TRANSLATION_TABLE.get(token, token), tag))
return results

现在我想为它编写测试,但是,我找不到如何正确模拟 "TRANSLATION_TABLE" 字典。

测试这个函数和模拟字典的正确方法是什么?

您想使用依赖注入

def get_translate(tokens_and_tags, translation_table=None)
  translation_table = translation_table or TRANSLATION_TABLE

现在你可以在你的测试中注入一个假的。

def test_get_translate(...):
  ...
  expect = ...
  actual = get_translate(fake_tokens_and_tags, {...})
  assert actual == expect.