3

xmlrpclib をロードするプラグインを使用して py.test を実行すると、テストの実行は次のように失敗します。

内部エラー> トレースバック (最新の呼び出しが最後):
内部エラー> ファイル "/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)
INTERNALERROR> ファイル " /Library/Python/2.7/site-packages/pytest-2.2.4-py2.7.egg/_pytest/core.py"、421 行目INTERNALERRORを呼び出す
> return self._docall(methods, kwargs)
INTERNALERROR> ファイル "/Library/Python/2.7/site-packages/pytest-2.2.4-py2.7.egg/_pytest/core.py"、432 行目、_docall INTERNALERROR> res = mc.execute()
INTERNALERROR> File "/Library/Python/2.7/site-packages/pytest-2.2.4-py2.7.egg/_pytest/core.py",line 350, in execute
INTERNALERROR> res = method(**kwargs)
INTERNALERROR> File "/Library/Python/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
INTERNALERROR> 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", line 1215, init
INTERNALERROR> raise IOError, "unsupported XML-RPC protocol"
INTERNALERROR> > > IOError: unsupported XML-RPC protocol

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

上記のプログラムを実行すると、期待どおりに戻ります。ここで何が起こっているのか途方に暮れています。上記の py.test とテスト プログラムの両方に print sys.path を追加したところ、実行ディレクトリ、test.py の /Users/esammons と /usr/local/bin を除いてパスが同じであることがわかりました。 py.test.

問題をさらに除外するために、/usr/local/bin/py.test と /usr/local/bin/py.test-2.7 をプロジェクト ルートにコピーしましたが、同じエラーが発生しました。

ありがとう!

4

1 に答える 1

4

この問題は、cfg ファイル内の値のフォーマットが原因でした。ConfigParser を使用して構成ファイルを解析しています。cfg ファイルの形式は次のとおりです。

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

この問題は、値を引用符 ('value') で囲んだことが原因でした。具体的には:

違う

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

bugzilla_url = https://bugzilla.example.com/xmlrpc.cgi
于 2012-06-19T18:34:49.993 に答える