testdocs.py

来自「SQLAlchemy. 经典的Python ORM框架。学习必看。」· Python 代码 · 共 72 行

PY
72
字号
import syssys.path = ['../../lib', './lib/'] + sys.pathimport osimport reimport doctestimport sqlalchemy.util as utilimport sqlalchemy.logging as salogimport loggingsalog.default_enabled=Truerootlogger = logging.getLogger('sqlalchemy')rootlogger.setLevel(logging.NOTSET)class MyStream(object):    def write(self, string):        sys.stdout.write(string)        sys.stdout.flush()    def flush(self):        passhandler = logging.StreamHandler(MyStream())handler.setFormatter(logging.Formatter('%(message)s'))rootlogger.addHandler(handler)def teststring(s, name, globs=None, verbose=None, report=True,                optionflags=0, extraglobs=None, raise_on_error=False,                parser=doctest.DocTestParser()):    from doctest import DebugRunner, DocTestRunner, master    # Assemble the globals.    if globs is None:        globs = {}    else:        globs = globs.copy()    if extraglobs is not None:        globs.update(extraglobs)    if raise_on_error:        runner = DebugRunner(verbose=verbose, optionflags=optionflags)    else:        runner = DocTestRunner(verbose=verbose, optionflags=optionflags)    test = parser.get_doctest(s, globs, name, name, 0)    runner.run(test)    if report:        runner.summarize()    if master is None:        master = runner    else:        master.merge(runner)    return runner.failures, runner.triesdef replace_file(s, newfile):    engine = r"'(sqlite|postgres|mysql):///.*'"    engine = re.compile(engine, re.MULTILINE)    s, n = re.subn(engine, "'sqlite:///" + newfile + "'", s)    if not n:        raise ValueError("Couldn't find suitable create_engine call to replace '%s' in it" % oldfile)    return sfor filename in ('ormtutorial', 'sqlexpression'):	filename = 'content/%s.txt' % filename	s = open(filename).read()	#s = replace_file(s, ':memory:')	s = re.sub(r'{(?:stop|sql|opensql)}', '', s)	teststring(s, filename)

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?