【发布时间】:2018-12-05 01:57:42
【问题描述】:
所以我有一个类方法,通过用户输入请求组大小;
def set_group_size(self):
valid_input = False
while not valid_input:
response = input('Group Size: ')
if isinstance(response, int):
self.group_size = response
valid_input = True
但是正在苦苦寻找最好的测试方法吗?我本质上是想确保 self.group_size 的值是一个整数,也是输入用户函数的整数。
我看到模拟在我一直在寻找的东西中非常受欢迎,所以这是我目前所拥有的,但它似乎并没有那么好,因为我可以更改方法本身和测试中的一些逻辑还是通过了;
def test_it_chooses_group_size(self):
self.together.set_group_size = MagicMock(return_value=6)
assert self.together.set_group_size() == 6
assert type(self.together.set_group_size()) == int
我似乎很难理解测试一种接受用户输入并将其设置为类属性值的方法的概念。
【问题讨论】:
-
不要在 Python 2 中使用
input,正如您的代码所暗示的那样。 (Python 3 的inputalways 返回一个str,而Python 2 的input等价于eval(raw_input()),所以谁知道input可能会返回什么,甚至做 i>. -
我正在使用 Python3。我应该始终使用
raw_input()? -
如果您使用的是 Python 3,那么
isinstance(response, int)将永远为真。 -
@chepner,明白了。我发现这是一个问题,并在下面回答了我自己的问题。再次感谢!
标签: python unit-testing automated-tests pytest