Как запустить Py.test в PyScripter
Я новичок в py.test, пожалуйста, дайте мне знать, как запустить py.test в редакторе PyScripter. Я попробовал белвым путем, но это не работает.
импортный тест
def func(x): вернуть x + 1
def test_answer (): assert func (3) == 5
pytest.main ()
и при запуске вышеуказанного скрипта я получаю сообщение об ошибке
Traceback (most recent call last):
File "<module1>", line 10, in <module>
File "C:\Python27\lib\site-packages\pytest-2.3.2-py2.7.egg\_pytest\core.py", line 474, in main
exitstatus = config.hook.pytest_cmdline_main(config=config)
File "C:\Python27\lib\site-packages\pytest-2.3.2-py2.7.egg\_pytest\core.py", line 422, in __call__
return self._docall(methods, kwargs)
File "C:\Python27\lib\site-packages\pytest-2.3.2-py2.7.egg\_pytest\core.py", line 433, in _docall
res = mc.execute()
File "C:\Python27\lib\site-packages\pytest-2.3.2-py2.7.egg\_pytest\core.py", line 351, in execute
res = method(**kwargs)
File "C:\Python27\lib\site-packages\pytest-2.3.2-py2.7.egg\_pytest\main.py", line 107, in pytest_cmdline_main
return wrap_session(config, _main)
File "C:\Python27\lib\site-packages\pytest-2.3.2-py2.7.egg\_pytest\main.py", line 92, in wrap_session
config.pluginmanager.notify_exception(excinfo, config.option)
File "C:\Python27\lib\site-packages\pytest-2.3.2-py2.7.egg\_pytest\core.py", line 285, in notify_exception
res = self.hook.pytest_internalerror(excrepr=excrepr)
File "C:\Python27\lib\site-packages\pytest-2.3.2-py2.7.egg\_pytest\core.py", line 422, in __call__
return self._docall(methods, kwargs)
File "C:\Python27\lib\site-packages\pytest-2.3.2-py2.7.egg\_pytest\core.py", line 433, in _docall
res = mc.execute()
File "C:\Python27\lib\site-packages\pytest-2.3.2-py2.7.egg\_pytest\core.py", line 351, in execute
res = method(**kwargs)
File "C:\Python27\lib\site-packages\pytest-2.3.2-py2.7.egg\_pytest\terminal.py", line 152, in pytest_internalerror
self.write_line("INTERNALERROR> " + line)
File "C:\Python27\lib\site-packages\pytest-2.3.2-py2.7.egg\_pytest\terminal.py", line 140, in write_line
self._tw.line(line, **markup)
File "C:\Python27\lib\site-packages\py-1.4.11-py2.7.egg\py\_io\terminalwriter.py", line 181, in line
self.write(s, **kw)
File "C:\Python27\lib\site-packages\py-1.4.11-py2.7.egg\py\_io\terminalwriter.py", line 225, in write
self._file.write(msg)
File "C:\Python27\lib\site-packages\py-1.4.11-py2.7.egg\py\_io\terminalwriter.py", line 241, in write
self._writemethod(data)
TypeError: 'AsyncStream' object is not callable
Пожалуйста, помоги мне
4 ответа
Сценарий, по-видимому, неверен, насколько я знаю, pytest.main можно использовать, если вы хотите, чтобы ваш pytest запускался интерпретатором python. Вы должны иметь свой тест в каталоге. Например, ваш файл pytest называется test_sample, который имеет следующий контент ======================================== pytests / test_sample ===============================
import pytest
def func(x): return x + 1
def test_answer(): assert func(3) == 5
================================================== ================================ Тогда у вас может быть следующий код в файле python, который запускает ваш test_sample
pytest.main(args=['-s', os.path.abspath('pytests')])
Это должно решить вашу проблему
Если вы не хотите, чтобы python запускал ваши pytests, вы можете настроить pyscripter runner для запуска pytests через tools ->configure tools, а затем добавить аргумент командной строки pytests. Затем вы можете запустить свой pytest из инструментов. По умолчанию pyscripter использует интерпретатор Python в качестве бегуна
import pytest,os
os.chdir("C:\Users\Public\Documents\Development\Python\<test_pytest.py>") #your file location
pytest.main(['-s', 'test_pytest.py'])
сохранить файл. На Pyscripter зайдите в Run ->Python Engine-> Internal Запустите тест, он должен работать. Somtime pyscripter не принимает изменения, возможно, вам придется заново инициализировать движок Python (Ctrl+F2)
Похоже, PyScripter устанавливает некоторый поток sys.stdout, который pytest не распознает. Я просто пытался уточнить обработку со стороны Pytest. Вы можете попробовать использовать его с:
pip install -i http://pypi.testrun.org -U pytest
который должен, в частности, установить также "py" lib, которая содержит код TerminalWriting. Если это не сработает, пожалуйста, отправьте файл с точной версией среды /PyScripter, которую вы используете. А также значение "import py; print py. Version".
HTH, Хольгер
Вы можете использовать pytest в pydev:
http://pypi.python.org/pypi/pytest-pydev/0.1