Рассмотрим следующий пример:Unittest - управляемые данными краевые тесты с объектами?
import unittest
class MyClass:
def __init__(self, dict: {}):
try:
if self.validate_dict(dict):
self.data = dict
except Exception as e:
raise Exception('Unable to create MyClass: {}'.format(str(e)))
def validate_dict(self, dict: {}):
if 'special_key' not in dict:
raise Exception('Missing Key: special_key')
# ... perhaps more complicated validation code...
return True
class MyTests(unittest.TestCase):
def test_bad_validation(self):
with self.assertRaises(Exception) as context:
test_dict = {}
test_class = MyClass(test_dict)
self.assertTrue('Unable to create' in str(context.exception))
... при условии, что это не страшно подход для модульного тестирования этой функции, как я мог бы добавить больше случаев испытания на UnitTest помимо всего {}
?
Я чувствую, что было бы полезно увидеть хороший список всех тестовых случаев конкретного теста с первого взгляда и быстро добавить новые.
Я нашел библиотеку DDT, которая была создана для решения этой самой проблемы, но не кажется, что существует какой-либо способ передать весь объект, например, dict, в качестве тестового аргумента без его распаковки. В этом случае я хочу проверить наличие ключей (и их может быть много), поэтому распаковка их в отдельные аргументы, такие как DDT, кажется плохим решением.
Поддерживает ли unittest
что-то вроде этого? Я знаю pytest
, но я хотел посмотреть, что возможно с unittest
.
Другие подходы к модульному тестированию этого кода также приветствуются.
прекрасно работает. Спасибо. – moogooloo