Patch #1663234: you can now run doctest on test files and modules
using "python -m doctest [-v] filename ...".
This commit is contained in:
parent
72363031b9
commit
ff432e6f4a
|
@ -201,6 +201,19 @@ prohibit it by passing \code{verbose=False}. In either of those cases,
|
|||
\code{sys.argv} is not examined by \function{testmod()} (so passing
|
||||
\programopt{-v} or not has no effect).
|
||||
|
||||
Since Python 2.6, there is also a command line shortcut for running
|
||||
\function{testmod()}. You can instruct the Python interpreter to run
|
||||
the doctest module directly from the standard library and pass the module
|
||||
name(s) on the command line:
|
||||
|
||||
\begin{verbatim}
|
||||
python -m doctest -v example.py
|
||||
\end{verbatim}
|
||||
|
||||
This will import \file{example.py} as a standalone module and run
|
||||
\function{testmod()} on it. Note that this may not work correctly if the
|
||||
file is part of a package and imports other submodules from that package.
|
||||
|
||||
For more information on \function{testmod()}, see
|
||||
section~\ref{doctest-basic-api}.
|
||||
|
||||
|
@ -267,6 +280,18 @@ Like \function{testmod()}, \function{testfile()}'s verbosity can be
|
|||
set with the \programopt{-v} command-line switch or with the optional
|
||||
keyword argument \var{verbose}.
|
||||
|
||||
Since Python 2.6, there is also a command line shortcut for running
|
||||
\function{testfile()}. You can instruct the Python interpreter to run
|
||||
the doctest module directly from the standard library and pass the file
|
||||
name(s) on the command line:
|
||||
|
||||
\begin{verbatim}
|
||||
python -m doctest -v example.txt
|
||||
\end{verbatim}
|
||||
|
||||
Because the file name does not end with \file{.py}, \module{doctest} infers
|
||||
that it must be run with \function{testfile()}, not \function{testmod()}.
|
||||
|
||||
For more information on \function{testfile()}, see
|
||||
section~\ref{doctest-basic-api}.
|
||||
|
||||
|
|
|
@ -2630,8 +2630,23 @@ __test__ = {"_TestClass": _TestClass,
|
|||
}
|
||||
|
||||
def _test():
|
||||
r = unittest.TextTestRunner()
|
||||
r.run(DocTestSuite())
|
||||
testfiles = [arg for arg in sys.argv[1:] if arg and arg[0] != '-']
|
||||
if len(testfiles) > 0:
|
||||
for filename in testfiles:
|
||||
if filename.endswith(".py"):
|
||||
# This is a module -- insert its dir into sys.path and try to
|
||||
# import it. If it is part of a package, that possibly won't work
|
||||
# because of package imports.
|
||||
dirname, filename = os.path.split(filename)
|
||||
sys.path.insert(0, dirname)
|
||||
m = __import__(filename[:-3])
|
||||
del sys.path[0]
|
||||
testmod(m)
|
||||
else:
|
||||
testfile(filename, module_relative=False)
|
||||
else:
|
||||
r = unittest.TextTestRunner()
|
||||
r.run(DocTestSuite())
|
||||
|
||||
if __name__ == "__main__":
|
||||
_test()
|
||||
|
|
Loading…
Reference in New Issue