#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 кажется правильной.
Итак, некоторые вещи, которые нужно проверить:
-
Можете ли вы запустить его в командной строке (из LiClipse) с помощью
py.test filename
? -
Как именно вы запускаете тесты? (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 для получения информации об этом.