У меня есть этот метод с именем str_to_hex
в моем файле common.py.
def str_to_hex(self, text):
self.log.info('str_to_hex :: text=%s' % text)
hex_string = ''
for character in text:
hex_string += ('%x' % ord(character)).ljust(2, '0')
self.log.info('str_to_hex; hex = %s' % hex_string)
return hex_string
Метод модульного тестирования, который я пишу,
def test_str_to_hex(self):
# test 1
self.assertEqual(self.common.str_to_hex('test'), '74657374');
# test 2
self.assertEqual(self.common.str_to_hex(None) , '')
# test 3
self.assertEqual(self.common.str_to_hex(34234), '')
# test 4
self.assertEqual(self.common.str_to_hex({'k': 'v'}), '')
# test 5
self.assertEqual(self.common.str_to_hex([None, 5]), '')
Итак, первые неудачи, которые я получил, говорят
# failure 1 (for test 2)
TypeError: 'NoneType' object is not iterable
# failure 2 (for test 3)
TypeError: 'int' object is not iterable
# failure 3 (for test 4)
AssertionError: '6b' != ''
# failure 4 (for test 5)
TypeError: ord() expected string of length 1, but NoneType found
В идеале в str_to_hex
должен передаваться только текст (например, str
или unicode
).
Для обработки пустых аргументов в качестве ввода я изменил свой код с помощью
def str_to_hex(self, text):
# .. some code ..
for character in text or '':
# .. some code
Таким образом, он проходит второй тест, но все еще не проходит третий.
Если я использую hasattr(text, ' __iter__'), он все равно не пройдет тест №4 и №5.
Я думаю, что лучше всего использовать Exception
. Но я открыт для предложений.
Пожалуйста, помогите мне. Заранее спасибо.
list
при условии, что он содержит толькоchar
. например ['а', 'б', 'в']. А как насчетdict
и других списков? - person Hussain   schedule 27.03.2015Exception
в разных случаях. - person hyades   schedule 27.03.2015TypeError
иAssertionError
, если метод может обрабатывать только текст? - person Hussain   schedule 27.03.2015