PyCharm IDE鼓励我在与我的类所在的模块相同的模块中编写单元测试。我喜欢在开发时自动测试每个模块的想法,但困扰我的是我有额外的导入仅用于这些单元测试。我可以忍受import unittest
,但请考虑:
from lxml import etree
class Foobar(object):
def __init__(self):
schema_root = etree.parse("schema/myschema.xsd")
schema = etree.XMLSchema(schema_root)
self.parser = etree.XMLParser(schema=schema)
def valid(self, filename):
try:
etree.parse(filename, self.parser)
return True
except etree.XMLSyntaxError:
return False
import unittest
from io import StringIO
class _FoobarTest(unittest.TestCase):
def test_empty_object_is_valid(self):
foobar = Foobar()
self.assertTrue(foobar.valid(StringIO("<object />")))
我想过这样做:
class _FoobarTest(unittest.TestCase):
from io import StringIO as StringIO_
def test_empty_object_is_valid(self):
foobar = Foobar()
self.assertTrue(foobar.valid(self.StringIO_("<object />")))
但这对我来说不是很自然。由于 Python 是一种非常关心最佳实践的语言;对此有一些官方声明吗?我在 PEP 文档中找不到任何关于此的内容,这让我想知道在同一个模块中进行单元测试是否是个好主意。