Почему Pycharm запускает тест, когда я называю функцию test_

Почему 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

Потому что вы добавили к имени функции префикс test. Удалите его и повторите попытку.

Nick 21.11.2022 14:32

Ага, я уже понял, зачем он это делает?

Nineteendo 21.11.2022 14:34
docs.pytest.org/en/7.1.x/explanation/…
bad_coder 21.11.2022 18:58

@bad_coder, странно то, что мой файл НЕ назван в соответствии с этой схемой именования.

Nineteendo 22.11.2022 08:21

Вы не объясняете, как вы проводите тесты.

bad_coder 22.11.2022 08:25

Я просто запускаю конфигурацию <current file>, это работало несколько версий назад. Я не понимаю, зачем это делается.

Nineteendo 22.11.2022 09:38

@Nineteendo мы не знаем, как выглядит ваша конфигурация запуска, поэтому мы не знаем, как вы запускаете pytest.

bad_coder 22.11.2022 19:05

Я не трогал конфигурацию запуска, я просто запускаю <текущий файл> на версии 2022.2.4.

Nineteendo 23.11.2022 16:34

@Nineteendo Что ж, тогда это неправильный способ запуска pytest в PyCharm. Существует 2 основных способа: один — использовать терминал (рекомендуется), другой — использовать выделенную конфигурацию запуска (также рекомендуется). Но в обоих случаях вам нужно выполнить обширную настройку для pytest, чтобы найти ваши файлы. В противном случае проверьте параметры CLI pytest, чтобы запустить один модуль.

bad_coder 24.11.2022 01:24

@bad_coder, но дело в том, что я не хочу запускать PyTest, а только текущий файл. У вас есть идеи, что может быть неправильно настроено, что вызывает это странное поведение?

Nineteendo 24.11.2022 07:31

@Nineteendo решение для простого запуска кода простое, см. эту тему. Сообщение, которое PyCharm дал вам, заключается в том, что IDE использовала свою собственную программу запуска pytest - то, что вам обычно не нужно, и из вопроса было неясно, каково ваше предполагаемое исправление. Но если вы хотите что-то простое, просто установите конфигурации запуска вручную по своему вкусу (это то, что вы всегда должны знать, как это сделать).

bad_coder 24.11.2022 13:29

@bad_coder, это было не очень полезно, но вы заставили меня задуматься об отключении pytest: stackoverflow.com/a/59203776/13454049 это решает мою проблему, да!

Nineteendo 25.11.2022 09:55
Как настроить Tailwind CSS с React.js и Next.js?
Как настроить Tailwind CSS с React.js и Next.js?
Tailwind CSS - единственный фреймворк, который, как я убедился, масштабируется в больших командах. Он легко настраивается, адаптируется к любому...
LeetCode запись решения 2536. Увеличение подматриц на единицу
LeetCode запись решения 2536. Увеличение подматриц на единицу
Увеличение подматриц на единицу - LeetCode
Переключение светлых/темных тем
Переключение светлых/темных тем
В Microsoft Training - Guided Project - Build a simple website with web pages, CSS files and JavaScript files, мы объясняем, как CSS можно...
Отношения &quot;многие ко многим&quot; в Laravel с методами присоединения и отсоединения
Отношения &quot;многие ко многим&quot; в Laravel с методами присоединения и отсоединения
Отношения "многие ко многим" в Laravel могут быть немного сложными, но с помощью Eloquent ORM и его моделей мы можем сделать это с легкостью. В этой...
В PHP
В PHP
В большой кодовой базе с множеством различных компонентов классы, функции и константы могут иметь одинаковые имена. Это может привести к путанице и...
Карта дорог Беладжар PHP Laravel
Карта дорог Беладжар PHP Laravel
Laravel - это PHP-фреймворк, разработанный для облегчения разработки веб-приложений. Laravel предоставляет различные функции, упрощающие разработку...
0
12
54
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Решение, которое я нашел, состояло в том, чтобы отключить Pytest после этого ответа: https://stackoverflow.com/a/59203776/13454049

Отключите Pytest для вашего проекта Откройте Настройки/Настройки | Инструменты | Диалоговое окно настроек интегрированных инструментов Python, как описано в разделе «Выбор среды тестирования». В поле «Исполнитель тестов по умолчанию» выберите Unittests. Нажмите OK, чтобы сохранить настройки.

Другие вопросы по теме