Я пытаюсь найти хороший способ протестировать метод, который проходит через некоторые циклы, а затем получает объект и вызывает один из его методов. У этого класса есть свои собственные тесты, поэтому я не уверен точно, что тестировать здесь. Я написал это, чтобы иметь другое поведение в тестовом примере, что, очевидно, не идеально.Единичное тестирование метода, который повторяется через петли
Я ищу предложения о том, как улучшить это, чтобы протестировать без условных обозначений.
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
Что именно вы пытаетесь проверить здесь? В ваших тестах у вас есть список предметов; это все, что ты хочешь? Зачем вам это нужно проверять? Какую пользу вы получаете от этого теста? – Dannnno
@ Dannnno Я пишу модульные тесты для каждого метода в каждом классе. Вопрос был перенесен из codereview (я не уверен, почему), и это был лучший способ протестировать метод. Преимущество имеет хорошее покрытие тестирования, а также проверку того, что метод делает то, что он должен. – user3610360
Я знаю, я видел вопрос о CR. Не преследуйте покрытие ради покрытия - если это не дает вам ничего осязаемого, то это вам не поможет. Вы упомянули, что у вас уже есть модульные тесты для класса. Значит ли это, что такие вещи, как 'self.get_consumer (имя_пользователя, запись)', уже хорошо протестированы? Написание тестов для этого действительно зависит от того, какие части этого имеют значение, и какие части мы можем игнорировать. – Dannnno