#python #unit-testing
#python #модульное тестирование
Вопрос:
У меня есть эта проблема:
Создайте функцию с именем binary_converter . Внутри функции реализуйте алгоритм для преобразования десятичных чисел от 0 до 255 в их двоичные эквиваленты.
Для любого недопустимого ввода верните строку Недопустимый ввод
Пример: для числа 5 возвращаемая строка 101
Код модульного тестирования приведен ниже
import unittest
class BinaryConverterTestCases(unittest.TestCase):
def test_conversion_one(self):
result = binary_converter(0)
self.assertEqual(result, '0', msg='Invalid conversion')
def test_conversion_two(self):
result = binary_converter(62)
self.assertEqual(result, '111110', msg='Invalid conversion')
def test_no_negative_numbers(self):
result = binary_converter(-1)
self.assertEqual(result, 'Invalid input', msg='Input below 0 not allowed')
def test_no_numbers_above_255(self):
result = binary_converter(300)
self.assertEqual(result, 'Invalid input', msg='Input above 255 not allowed')
мой код приведен ниже
def binary_converter(n):
if(n==0):
return "0"
elif(n>255):
return "invalid input"
elif(n < 0):
return "invalid input"
else:
ans=""
while(n>0):
temp=n%2
ans=str(temp) ans
n=n/2
return ans
Результаты модульного тестирования
Total Specs: 4 Total Failures: 2
1. test_no_negative_numbers
`Failure in line 19, in test_no_negative_numbers self.assertEqual(result, 'Invalid input', msg='Input below 0 not allowed') AssertionError: Input below 0 not allowed`
2. test_no_numbers_above_255
`Failure in line 23, in test_no_numbers_above_255 self.assertEqual(result, 'Invalid input', msg='Input above 255 not allowed') AssertionError: Input above 255 not allowed`
Комментарии:
1. «Недопустимый» ! = «недопустимый» ?
2. Не беспокойтесь — вы можете вечно смотреть на подобные вещи, не видя проблемы.
Ответ №1:
Сравнение строк в случаях Python заботится.
>>> 'invalid input' == 'Invalid input'
False
Вам нужно настроить тестовый код или код реализации так, чтобы строковые литералы точно совпадали.
def test_no_negative_numbers(self):
result = binary_converter(-1)
self.assertEqual(result, 'Invalid input', msg='Input below 0 not allowed')
^--- (UPPERCASE)
...
elif(n < 0):
return "invalid input"
^--- (lowercase)