Найти - Пользователи
Полная версия: функция не проходит тесты, не могу понять - почему
Начало » Python для новичков » функция не проходит тесты, не могу понять - почему
1
delitet
функция не проходит тесты, не могу понять - почему

функция
 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()
delitet
разобрался
delitet
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()
py.user.next
delitet
во-первых if'ы были прописаны неправильно
во-вторых функция array_search при if == true возвращала тип данных None
надо было None изменить на int
Да не, у тебя функция неправильно написана сама. Надо тебе сначала прочитать какой-нибудь туториал по питону. Потом пописать после этого туториала, а уже потом читать книжку по питону. Потом писать после этой книжки. И потом уже изучать документацию к питону и после неё писать ещё больше.

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

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

Видимо, ты всего этого не знаешь и думаешь, что ты гений и сам до всего догадаешься. Но это приведёт только к потере кучи времени. Не думаю, что ты что-то откроешь новое. Ты только пройдёшь по всем граблям, по которым проходят ленивцы, не читающие книг, и закончишь всё равно на книгах, которые уже кто-то написал давным давно.
delitet
py.user.next
не, я прохожу курс https://www.youtube.com/watch?v=KdZ4HF1SrFs
там он говорил про подобные юниттесты)
про программы тестирования спс - не знал
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB