gpt4 book ai didi

python - 单元测试遍历循环的方法

转载 作者:太空狗 更新时间:2023-10-30 02:59:20 25 4
gpt4 key购买 nike

我正在尝试想出一个好方法来测试一个方法,该方法经过一些循环,然后获取一个对象并调用其中一个方法。该类(class)有自己的测试,所以我不确定到底要在这里测试什么。我把它写成在测试用例中有不同的行为,这显然不理想。

我正在寻找有关如何改进它以在没有条件的情况下进行测试的建议。

def direct(self, test=False):
"""
routes data in self.data_groups to
consumers in self.consumers_list
"""
if test:
output_list = []
for data_type, group in self.data_groups.items():
if test:
output_list.append(data_type)
output_list.append(group)
for consumer_name in self.consumers_list[data_type]:
for record in group:
if test:
output_list.append(record.values()[0])
else:
consumer = self.get_consumer(consumer_name,
record)
consumer_output = consumer.do_something()

if test:
return output_list
return True

最佳答案

很遗憾,我不确定您所说的是否可行。我会说你可以使用装饰器,但如果不完全覆盖 direct ,那将是无用的。我不确定这是否对您更好,但您可以在自己的类中重写测试方法吗?这将使它看起来更简洁,并且您可以以更直观的方式对代码进行分组。

做类似的事情:

class DirectClass:
def __init__(self):
self.data_groups = dict
self.consumers_list = list

def direct(self):
"""
routes data in self.data_groups to
consumers in self.consumers_list
"""
for data_type, group in self.data_groups.items():
for consumer_name in self.consumers_list[data_type]:
for record in group:
consumer = self.get_consumer(consumer_name,
record)
consumer_output = consumer.do_something()

return True

class TestDirect(DirectClass):
def __init__(self):
DirectClass.__init__(self)

def direct(self):
output_list = []
for data_type, group in self.data_groups.items():
output_list.append(data_type)
output_list.append(group)
for consumer_name in self.consumers_list[data_type]:
for record in group:
output_list.append(record.values()[0])

return output_list

关于python - 单元测试遍历循环的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31843292/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com