Выходы pytest без ошибок, но с "собранными 0 элементами"
Я пытаюсь запустить модульные тесты, используя pytest в python. Я написал модуль с одним классом и некоторыми методами внутри этого класса. Я написал unit test для этого модуля (с простым утверждением для проверки равенства списков), где я сначала создаю экземпляр класса со списком. Затем я вызываю метод на этом объекте (из класса). Оба test.py
и script для тестирования находятся в одной папке. Когда я запускаю pytest
, я получаю "собранные 0 элементов".
Я новичок в pytest
, но могу успешно использовать их примеры. Что мне здесь не хватает?
Запуск Python версии 3.5.1 и pytest версии 2.8.1 на Windows 7.
Мой код test.py:
from sort_algos import Sorts
def integer_sort_test():
myobject1 = Sorts([-100,10,-10])
assert myobject1.merge_sort() == [-101,-100,10]
sort_algos.py - это модуль, содержащий класс Sorts. merge_sort - это метод в разделе Сортировка.
Ответы
Ответ 1
pytest
собирает тесты в соответствии с соглашением об именах. По умолчанию любой файл, который должен содержать тесты, должен быть назван, начиная с test_
, и любая функция в файле, которая должна рассматриваться как тест, также должна начинаться с test_
.
Если вы переименуете тестовый файл в test_sorts.py
и переименуете функцию примера, указанную выше как test_integer_sort
, вы обнаружите, что она автоматически собирается и выполняется.
Это поведение по сбору тестов можно изменить в соответствии с вашими желаниями. Для его изменения потребуется узнать о конфигурации в pytest.
Ответ 2
У меня была та же проблема, но моя функция называлась test.py
Я никогда не думал, что проблема заключалась в имени файла, в документации сказано: "pytest запустит все файлы формы test_*.py
*_test.py
или *_test.py
в текущий каталог и его подкаталоги. В более общем смысле он соответствует стандартным правилам обнаружения тестов. "
точно !, имя должно быть test_.py
или test_something.py
и работает для меня.
Я чувствую себя так глупо, хе-хе