Плагин PyTest, использующий xmlrpclib, не работает с IOError: неподдерживаемый протокол XML-RPC в Mac OS X

При запуске py.test с использованием плагина, который загружает xmlrpclib, тестовый запуск завершается ошибкой:

INTERNALERROR> Traceback (последний вызов последним):
INTERNALERROR> File "/Library/Python/2.7/site-packages/pytest-2.2.4-py2.7.egg/_pytest/main.py", строка 70, в wrap_session
ВНУТРЕННЯЯ ОШИБКА> config.pluginmanager.do_configure (config)
ВНУТРЕННЯЯ ОШИБКА> Файл "/Library/Python/2.7/site-packages/pytest-2.2.4-py2.7.egg/_pytest/core.py ", строка 267, в do_configure
ВНУТРЕННЯЯ ОШИБКА> config.hook.pytest_configure (config = self._config)
ВНУТРЕННЯЯ ОШИБКА> Файл" /Library/Python/2.7/site-packages/pytest-2.2.4-py2. 7.egg / _pytest / core.py ", строка 421, в вызове
ВНУТРЕННЯЯ ОШИБКА> return self._docall (методы, kwargs)
ВНУТРЕННЯЯ ОШИБКА> Файл" /Library/Python/2.7 /site-packages/pytest-2.2.4-py2.7.egg/_pytest/core.py", строка 432, в _docall ВНУТРЕННЯЯ ОШИБКА> res = mc.execute ()
ВНУТРЕННЯЯ ОШИБКА> Файл "/ Библиотека / Python / 2.7 / site-packages / pytest-2.2.4-py2.7.egg / _pytest / core.py ", строка 350, при выполнении
ВНУТРЕННЯЯ ОШИБКА> res = method (** kwargs)
ВНУТРЕННЯЯ ОШИБКА> Файл" / Библиотека / Pyth on / 2.7 / site-packages / pytest_marker_bugzilla-0.01-py2.7.egg / pytest_marker_bugzilla.py ", строка 94, в pytest_configure
ВНУТРЕННЯЯ ОШИБКА> bz = bugzilla.Bugzilla (url = url)
ВНУТРЕННЯЯ ОШИБКА> Файл" build / bdist.macosx-10.7-intel / egg / bugzilla / init .py ", строка 75, в init
ВНУТРЕННЯЯ ОШИБКА> c = getBugzillaClassForURL (kwargs [' url '])
ВНУТРЕННЯЯ ОШИБКА> Файл "build / bdist.macosx-10.7-intel / egg / bugzilla / init .py", строка 26, в getBugzillaClassForURL
ВНУТРЕННЯЯ ОШИБКА> s = xmlrpclib .ServerProxy (url)
ВНУТРЕННЯЯ ОШИБКА> Файл "build / bdist.macosx-10.7-intel / egg / xmlrpclib.py", строка 1215, в init
ВНУТРЕННЯЯ ОШИБКА> поднять ошибку IOError, " неподдерживаемый протокол XML-RPC "
ВНУТРЕННЯЯ ОШИБКА>>> IOError: неподдерживаемый протокол XML-RPC

Я убедился, что xmlrpclib будет работать с простой тестовой программой, эта программа удаляет py.test с изображения.

#!/usr/bin/env python

import xmlrpclib
import bugzilla
import sys
for i in sys.path:
    print i

url = 'https://bugzilla.redhat.com/xmlrpc.cgi'
u = ' '
p = ' '

try:
    proxy = xmlrpclib.ServerProxy(url)
except(), e:
    print e
b = bugzilla.Bugzilla(url=url)
b.login(u,p)
bug = b.getbugsimple('12345')
print bug

Приведенная выше программа при выполнении возвращается, как и ожидалось. Я не понимаю, что здесь происходит. Я даже добавил print sys.path как в py.test, так и в тестовую программу выше и обнаружил, что пути идентичны, за исключением каталога выполнения, / Users / esammons для test.py и / usr / local / bin для py.test.

Чтобы еще больше исключить проблемы, я скопировал /usr/local/bin/py.test и /usr/local/bin/py.test-2.7 в корень моего проекта, произошла такая же ошибка.

Спасибо!


person Eric    schedule 13.06.2012    source источник


Ответы (1)


Проблема была вызвана форматированием моих значений в моем файле cfg. Я использую ConfigParser для анализа моего файла конфигурации; файл cfg имеет следующий формат.

[DEFAULT]
key = value
key2 = value
key3 = value

Проблема была вызвана тем, что я заключил значение в кавычки («значение»). Конкретно:

НЕПРАВИЛЬНЫЙ

bugzilla_url = 'https://bugzilla.example.com/xmlrpc.cgi'

ПРАВИЛЬНО

bugzilla_url = https://bugzilla.example.com/xmlrpc.cgi
person Eric    schedule 19.06.2012
comment
То же самое случилось со мной, используя Jenkins и подключаемый модуль EnvInject. - person Alois Mahdal; 09.07.2013