Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 19, 2022 13:10:06

delitet
Зарегистрирован: 2022-03-29
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

функция не проходит тесты, не могу понять - почему

функция не проходит тесты, не могу понять - почему

функция

 array_search()
проходит только первый тест, второй и третий - FAIL
 def array_search(A:list, x:int):
     '''	
     Функция принимает 2 аргумента
     A – список
     Х – искомый индекс
     возвращает индекс X
     '''
     for i in range(len(A)):
          if A[i] == x:
               return A.index(x)
     return 'None'
def test_array_search():
     #первый тест - успешный результат
     A1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
     M = array_search(A1, 999)
     if M == "None":
          print('++++++++++++PASSED')
     else:
          print('------------FAIL')
     #тест 2 - провал
     A2 = [-1,-2,-2,-3,-4,-5]
     M = array_search(A2, -5)
     if M == 2:
          print('++++++++PASSED')
     else:
          print('------------FAIL')
     
     #тест 3 - провал
     A3 = [10,20,30,40,50,60]
     M = array_search(A3, 40)
     if M == -1:
          print('+++++++PASSED')
     else:
          print('------------FAIL')
test_array_search()

Офлайн

#2 Апрель 19, 2022 13:25:13

delitet
Зарегистрирован: 2022-03-29
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

функция не проходит тесты, не могу понять - почему

разобрался

Офлайн

#3 Апрель 19, 2022 14:07:49

delitet
Зарегистрирован: 2022-03-29
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

функция не проходит тесты, не могу понять - почему

delitet
разобрался
во-первых if'ы были прописаны неправильно
во-вторых функция array_search при if == true возвращала тип данных None
надо было None изменить на int
 def array_search(A:list, x:int):
     '''	
     Функция принимает 2 аргумента
     A – список
     Х – искомый индекс
     возвращает индекс X
     '''
     for i in range(len(A)):
          if A[i] == x:
               return print(int(A.index(x)))
     return 'что-то не так'
def test_array_search():
     A1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
     M = array_search(A1, 999)
     if M == "None":
          print('++++++++++++PASSED')
     else:
          print('------------FAIL')
     A2 = [-1,-2,-2,-3,-4,-5]
     M = array_search(A2, -5)
     if int(M) == 5:
          print('++++++++PASSED')
     else:
          print('------------FAIL')
     
     A3 = [10,20,30,40,50,60]
     M = array_search(A3, 40)
     if M == 3:
          print('+++++++PASSED')
     else:
          print('------------FAIL')
test_array_search()

Отредактировано delitet (Апрель 19, 2022 14:20:07)

Офлайн

#4 Апрель 19, 2022 22:18:32

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9875
Репутация: +  854  -
Профиль   Отправить e-mail  

функция не проходит тесты, не могу понять - почему

delitet
во-первых if'ы были прописаны неправильно
во-вторых функция array_search при if == true возвращала тип данных None
надо было None изменить на int
Да не, у тебя функция неправильно написана сама. Надо тебе сначала прочитать какой-нибудь туториал по питону. Потом пописать после этого туториала, а уже потом читать книжку по питону. Потом писать после этой книжки. И потом уже изучать документацию к питону и после неё писать ещё больше.

Зачем ты делаешь эти тесты, если есть pytest? Видимо, ты просто не знаешь, что в питоне уже есть куча инструментов для тестирования. Есть unittest, doctest, pytest. Вот эти три можно задействовать в разных ситуациях. unittest - полноценная система для тестирования. doctest - скоростная система тестирования. pytest - сбалансированная система тестирования.

А! Есть ещё книжки по тестированию! Как правильно делать тесты в любой системе, написано как раз в них. Тесты же должны быть полностью независимы друг от друга, покрывать пространство тестируемой области без дублирования друг друга и при этом покрывать всё пространство, а не его часть.

Видимо, ты всего этого не знаешь и думаешь, что ты гений и сам до всего догадаешься. Но это приведёт только к потере кучи времени. Не думаю, что ты что-то откроешь новое. Ты только пройдёшь по всем граблям, по которым проходят ленивцы, не читающие книг, и закончишь всё равно на книгах, которые уже кто-то написал давным давно.



Отредактировано py.user.next (Апрель 19, 2022 22:20:53)

Офлайн

#5 Июнь 15, 2022 13:42:55

delitet
Зарегистрирован: 2022-03-29
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

функция не проходит тесты, не могу понять - почему

py.user.next
не, я прохожу курс https://www.youtube.com/watch?v=KdZ4HF1SrFs
там он говорил про подобные юниттесты)
про программы тестирования спс - не знал

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version