根据我的阅读,单元测试应该一次只测试一个函数/方法.但是我不清楚如何测试只设置没有返回值的内部对象数据来测试的方法,就像下面Python类中的setvalue()方法一样(这是一个更复杂的简单表示):
class Alpha(object):
def __init__(self):
self.__internal_dict = {}
def setvalue(self, key, val):
self.__internal_dict[key] = val
def getvalue(self, key):
return self.__internal_dict[key]
Run Code Online (Sandbox Code Playgroud)
如果单元测试法规定我们应该一次测试一个函数,那么如何自己测试setvalue()方法呢?一个"解决方案"是将我传入setvalue()的内容与getvalue()的返回进行比较,但如果我的断言失败,我不知道哪个方法失败 - 是setvalue()还是getvalue()?另一个想法是将我传入setvalue()的内容与对象的私有数据__internal_dict [key]进行比较 - 一个巨大的恶心黑客!
截至目前,这是我对这类问题的解决方案,但如果断言提出,那只会表明我的两个主要方法中有一个没有正常工作.
import pytest
def test_alpha01():
alpha = Alpha()
alpha.setvalue('abc', 33)
expected_val = 33
result_val = alpha.getvalue('abc')
assert result_val == expected_val
Run Code Online (Sandbox Code Playgroud)
帮助赞赏