filterous は、単体テストで単純なXMLオブジェクトを解析するために使用 しています。ただし、後でオブジェクトにアクセスしようとすると、Python は " " メッセージで終了します。ドキュメントによると、「lxml 2.3 以降では、.close() メソッドもエラーの場合に呼び出されます」とのことですが、エラー メッセージや. 私のIO-fooは明らかに速度が遅いので、誰か提案がありますか?iterparse
StringIO
StringIO
ValueError: I/O operation on closed file
iterparse
Exception
iterparse
コマンドと (できれば) 関連するコード:
$ python2.6 setup.py test
setup.py:
from setuptools import setup
from filterous import filterous as package
setup(
...
test_suite = 'tests.tests',
テスト/tests.py:
from cStringIO import StringIO
import unittest
from filterous import filterous
XML = '''<posts tag="" total="3" ...'''
class TestSearch(unittest.TestCase):
def setUp(self):
self.xml = StringIO(XML)
self.result = StringIO()
...
def test_empty_tag_not(self):
"""Empty tag; should get N results."""
filterous.search(
self.xml,
self.result,
{'ntag': [u'']},
['href'],
False)
self.assertEqual(
len(self.result.getvalue().splitlines()),
self.xml.getvalue().count('<post '))
filterous/filterous.py:
from lxml import etree
...
def search(file_pointer, out, terms, includes, human_readable = True):
...
context = etree.iterparse(file_pointer, tag='posts')
トレースバック:
ERROR: Empty tag; should get N results.
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/victor/dev/filterous/tests/tests.py", line 149, in test_empty_tag_not
self.xml.getvalue().count('<post '))
ValueError: I/O operation on closed file
PS: 2010-07-27のテストはすべて正常に実行されました。