客串了一把测试工程师
主要关于什么时候用retun_value,什么时候用side_effect
class Account():
list_a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
def get_account(self):
return len(self.list_a)
def _mock_get_account_side_effect(path=None):
if path is None:
return "i am mock get side effect"
else:
return path
def _mock_get_account_return_value():
return "i am mock get return value"
from mock import Mock
print("原来结果 {0}".format(Account().get_account()))
Account.get_account = Mock(side_effect=_mock_get_account_side_effect)
print("mock.side_effect 对象后结果 {0}".format(Account().get_account()))
print("mock.side_effect 带参数对象后结果 {0}".format(Account().get_account("原封不动送回来哈哈")))
Account.get_account = Mock(return_value=_mock_get_account_return_value)
print("mock.return_value 对象后结果1 {0}".format(Account().get_account()))
Account.get_account = Mock(return_value=_mock_get_account_return_value())
print("mock.return_value 对象后结果2 {0}".format(Account().get_account()))
样例结果
原来结果 9
mock.side_effect 对象后结果 i am mock get side effect
mock.side_effect 带参数对象后结果 原封不动送回来哈哈
mock.return_value 对象后结果1 <function _mock_get_account_return_value at 0x000000000364D8C8>
mock.return_value 对象后结果2 i am mock get return value
后续会将关于django 和 flask 的测试覆盖率样例方法放上来