【发布时间】:2013-09-21 09:39:16
【问题描述】:
我是 python 模拟和单元测试的新手。如何模拟函数的局部变量?例如,如何在测试时将age 更改为 10 而不是 27?
# data_source.py
def get_name():
age = 27 #real value
return "Alice"
# person.py
from data_source import get_name
class Person(object):
def name(self):
return get_name()
# The unit test
from mock import patch
from person import Person
@patch('person.age')
def test_name(mock_age):
mock_age = 10 # mock value
person = Person()
name = person.name()
assert age == 10
【问题讨论】:
-
如果需要从外部更改
age值以测试函数,则设置该值不应成为函数工作的一部分。在这里,测试系统会自动警告您存在一个主要的代码设计问题。
标签: python unit-testing