Почему PyCharm вдруг хочет запустить тест?
Мой скрипт называется 1_selection_sort.py И я пытаюсь вызвать функцию test_selection_sort, и я просто работаю с <current file> (я полагаю, добавлено в 2022.2.2).
Я почти уверен, что это работало 24.10.2022 (версия 2022.2.2 и, возможно, 2022.2.3, но в 2022.2.4 она больше не работает).
Может ли кто-нибудь сказать мне, когда и почему это было изменено? Или может я что-то не так сделал при установке?
Мой файл НЕ назван в соответствии с этой схемой именования (https://docs.pytest.org/en/7.1.x/explanation/goodpractices.html#conventions-for-python-test-discovery):
In those directories, search for test_*.py
or *_test.py files, imported by their test
package name.
"""
Schrijf een functie selection_sort dat een lijst in dalende volgorde sorteert m.b.v. selection sort.
"""
def selection_sort(lijst):
for i in range(len(lijst)):
for j, number in enumerate(lijst):
if number < lijst[i]:
lijst[j] = lijst[i]
lijst[i] = number
return lijst
def test_selection_sort(lijst, check):
print(lijst)
result = selection_sort(lijst)
print(result)
print(check)
assert result == check
print("Begin controle selection_sort")
test_selection_sort([1, 3, 45, 32, 65, 34], [65, 45, 34, 32, 3, 1])
test_selection_sort([1], [1])
test_selection_sort([54, 29, 12, 92, 2, 100], [100, 92, 54, 29, 12, 2])
test_selection_sort([], [])
print("Controle selection_sort succesvol")
Вывод:
"C:\Program Files\Anaconda3\python.exe" "C:/Users/r0944584/AppData/Local/JetBrains/PyCharm Community Edition 2022.2.4/plugins/python-ce/helpers/pycharm/_jb_pytest_runner.py" --path "C:\Users\r0944584\Downloads\skeletons(4)\skeletons\1_selection_sort.py"
Testing started at 14:13 ...
Launching pytest with arguments C:\Users\r0944584\Downloads\skeletons(4)\skeletons\1_selection_sort.py --no-header --no-summary -q in C:\Users\r0944584\Downloads\skeletons(4)\skeletons
============================= test session starts =============================
collecting ... collected 1 item
1_selection_sort.py::test_selection_sort ERROR [100%]
test setup failed
file C:\Users\r0944584\Downloads\skeletons(4)\skeletons\1_selection_sort.py, line 15
def test_selection_sort(lijst, check):
E fixture 'lijst' not found
> available fixtures: anyio_backend, anyio_backend_name, anyio_backend_options, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, doctest_namespace, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory
> use 'pytest --fixtures [testpath]' for help on them.
C:\Users\r0944584\Downloads\skeletons(4)\skeletons\1_selection_sort.py:15
========================= 1 warning, 1 error in 0.01s =========================
Process finished with exit code 1
Ага, я уже понял, зачем он это делает?
@bad_coder, странно то, что мой файл НЕ назван в соответствии с этой схемой именования.
Вы не объясняете, как вы проводите тесты.
Я просто запускаю конфигурацию <current file>, это работало несколько версий назад. Я не понимаю, зачем это делается.
@Nineteendo мы не знаем, как выглядит ваша конфигурация запуска, поэтому мы не знаем, как вы запускаете pytest.
Я не трогал конфигурацию запуска, я просто запускаю <текущий файл> на версии 2022.2.4.
@Nineteendo Что ж, тогда это неправильный способ запуска pytest в PyCharm. Существует 2 основных способа: один — использовать терминал (рекомендуется), другой — использовать выделенную конфигурацию запуска (также рекомендуется). Но в обоих случаях вам нужно выполнить обширную настройку для pytest, чтобы найти ваши файлы. В противном случае проверьте параметры CLI pytest, чтобы запустить один модуль.
@bad_coder, но дело в том, что я не хочу запускать PyTest, а только текущий файл. У вас есть идеи, что может быть неправильно настроено, что вызывает это странное поведение?
@Nineteendo решение для простого запуска кода простое, см. эту тему. Сообщение, которое PyCharm дал вам, заключается в том, что IDE использовала свою собственную программу запуска pytest - то, что вам обычно не нужно, и из вопроса было неясно, каково ваше предполагаемое исправление. Но если вы хотите что-то простое, просто установите конфигурации запуска вручную по своему вкусу (это то, что вы всегда должны знать, как это сделать).
@bad_coder, это было не очень полезно, но вы заставили меня задуматься об отключении pytest: stackoverflow.com/a/59203776/13454049 это решает мою проблему, да!
Решение, которое я нашел, состояло в том, чтобы отключить Pytest после этого ответа: https://stackoverflow.com/a/59203776/13454049
Отключите Pytest для вашего проекта Откройте Настройки/Настройки | Инструменты | Диалоговое окно настроек интегрированных инструментов Python, как описано в разделе «Выбор среды тестирования». В поле «Исполнитель тестов по умолчанию» выберите Unittests. Нажмите OK, чтобы сохранить настройки.
Потому что вы добавили к имени функции префикс test. Удалите его и повторите попытку.