Настройка py.test в PyDev (Python 3, Mac)

#python #python-3.x #pydev #pytest

#python #python-3.x #pydev #pytest

Вопрос:

У меня Mac, и я установил py.test в библиотеку Python 3 (вместо стандартной библиотеки Apple Python 2.7). Это потому, что я использую Python 3.

Однако, когда я запускаю py.test в PyDev, возникает следующая ошибка. Есть какие-нибудь объяснения, как это решить? Я размышлял над этим вопросом довольно долго.

 collected 1 items
INTERNALERROR> Traceback (most recent call last):
INTERNALERROR>   File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/_pytest/main.py", line 96, in wrap_session
INTERNALERROR>     session.exitstatus = doit(config, session) or 0
INTERNALERROR>   File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/_pytest/main.py", line 130, in _main
INTERNALERROR>     config.hook.pytest_collection(session=session)
INTERNALERROR>   File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 745, in __call__
INTERNALERROR>     return self._hookexec(self, self._nonwrappers   self._wrappers, kwargs)
INTERNALERROR>   File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 339, in _hookexec
INTERNALERROR>     return self._inner_hookexec(hook, methods, kwargs)
INTERNALERROR>   File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 334, in <lambda>
INTERNALERROR>     _MultiCall(methods, kwargs, hook.spec_opts).execute()
INTERNALERROR>   File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 614, in execute
INTERNALERROR>     res = hook_impl.function(*args)
INTERNALERROR>   File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/_pytest/main.py", line 139, in pytest_collection
INTERNALERROR>     return session.perform_collect()
INTERNALERROR>   File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/_pytest/main.py", line 592, in perform_collect
INTERNALERROR>     config=self.config, items=items)
INTERNALERROR>   File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 745, in __call__
INTERNALERROR>     return self._hookexec(self, self._nonwrappers   self._wrappers, kwargs)
INTERNALERROR>   File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 339, in _hookexec
INTERNALERROR>     return self._inner_hookexec(hook, methods, kwargs)
INTERNALERROR>   File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 334, in <lambda>
INTERNALERROR>     _MultiCall(methods, kwargs, hook.spec_opts).execute()
INTERNALERROR>   File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/_pytest/vendored_packages/pluggy.py", line 614, in execute
INTERNALERROR>     res = hook_impl.function(*args)
INTERNALERROR>   File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/_pytest/mark.py", line 84, in pytest_collection_modifyitems
INTERNALERROR>     if not matchmark(colitem, matchexpr):
INTERNALERROR>   File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/_pytest/mark.py", line 124, in matchmark
INTERNALERROR>     return eval(markexpr, {}, MarkMapping(colitem.keywords))
INTERNALERROR>   File "<string>", line 1
INTERNALERROR>     axfail=2
INTERNALERROR>           ^
INTERNALERROR> SyntaxError: invalid syntax
  

Вот картинка:

Изображение

Примечания: Я установил PyDev в комплекте с LiClipse. Я настроил программу запуска тестирования py.test в соответствии с документацией:

 --maxfail=2 --tb=native
  

Затем я запустил простой тестовый файл py.test в соответствии с документацией py.test:

 def func(x):
    return x   1

def test_answer():
    assert func(3) == 5
  

Ответ №1:

Конфигурация pytest кажется правильной.

Итак, некоторые вещи, которые нужно проверить:

  1. Можете ли вы запустить его в командной строке (из LiClipse) с помощью py.test filename ?

  2. Как именно вы запускаете тесты? (Ctrl F9 для этого файла или запуска папки?)

Ошибка, по-видимому, возникает при оценке отметки в pytest (т. Е.: pytest.mark.xxx), возможно ли, что у вас есть какая-то недопустимая отметка в какой-то другой части вашего проекта?

Комментарии:

1. Он корректно запускается в командной строке. Я запускал Control F9 (Command F9 на Mac).

2. Просматривали ли вы свои оценки в проекте, чтобы узнать, может ли какая-то отметка быть проблемой? Кроме того, сделайте следующее: создайте модуль с помощью: import sys;print(sys.executable);print('n'.join(sorted(sys.path))) , запустите из командной строки и из IDE и посмотрите, соответствует ли он.

3. Когда я запускаю из командной строки и из IDE, это в основном совпадает. ‘/Users/UserName/Computer Programming /Python Liclipse Workspace/Practice/src’ is и ‘/usr/local/lib/python3.5/site-packages’ — это две строки в IDE, но не командная строка.

4. Я не совсем понимаю, что вы подразумеваете под «отметками» проекта, поскольку я немного новичок в PyDev. У вас есть ссылка, объясняющая эту концепцию?

5. Это связано с pytest, а не с pydev. Вы можете увидеть: doc.pytest.org/en/latest/mark.html для получения информации об этом.