mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 03:44:55 +00:00 
			
		
		
		
	Issue24756: clarify usage of run_docstring_examples()
This commit is contained in:
		
							parent
							
								
									0b0c3b6624
								
							
						
					
					
						commit
						2a5f9da56c
					
				
					 1 changed files with 23 additions and 7 deletions
				
			
		| 
						 | 
					@ -914,15 +914,10 @@ and :ref:`doctest-simple-testfile`.
 | 
				
			||||||
   above, except that *globs* defaults to ``m.__dict__``.
 | 
					   above, except that *globs* defaults to ``m.__dict__``.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
There's also a function to run the doctests associated with a single object.
 | 
					 | 
				
			||||||
This function is provided for backward compatibility.  There are no plans to
 | 
					 | 
				
			||||||
deprecate it, but it's rarely useful:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.. function:: run_docstring_examples(f, globs, verbose=False, name="NoName", compileflags=None, optionflags=0)
 | 
					.. function:: run_docstring_examples(f, globs, verbose=False, name="NoName", compileflags=None, optionflags=0)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   Test examples associated with object *f*; for example, *f* may be a module,
 | 
					   Test examples associated with object *f*; for example, *f* may be a string,
 | 
				
			||||||
   function, or class object.
 | 
					   a module, a function, or a class object.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   A shallow copy of dictionary argument *globs* is used for the execution context.
 | 
					   A shallow copy of dictionary argument *globs* is used for the execution context.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1821,6 +1816,27 @@ several options for organizing tests:
 | 
				
			||||||
* Define a ``__test__`` dictionary mapping from regression test topics to
 | 
					* Define a ``__test__`` dictionary mapping from regression test topics to
 | 
				
			||||||
  docstrings containing test cases.
 | 
					  docstrings containing test cases.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					When you have placed your tests in a module, the module can itself be the test
 | 
				
			||||||
 | 
					runner.  When a test fails, you can arrange for your test runner to re-run only
 | 
				
			||||||
 | 
					the failing doctest while you debug the problem.  Here is a minimal example of
 | 
				
			||||||
 | 
					such a test runner::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if __name__ == '__main__':
 | 
				
			||||||
 | 
					        import doctest
 | 
				
			||||||
 | 
					        flags = doctest.REPORT_NDIFF|doctest.FAIL_FAST
 | 
				
			||||||
 | 
					        if len(sys.argv) > 1:
 | 
				
			||||||
 | 
					            name = sys.argv[1]
 | 
				
			||||||
 | 
					            if name in globals():
 | 
				
			||||||
 | 
					                obj = globals()[name]
 | 
				
			||||||
 | 
					            else:
 | 
				
			||||||
 | 
					                obj = __test__[name]
 | 
				
			||||||
 | 
					            doctest.run_docstring_examples(obj, globals(), name=name,
 | 
				
			||||||
 | 
					                                           optionflags=flags)
 | 
				
			||||||
 | 
					        else:
 | 
				
			||||||
 | 
					            fail, total = doctest.testmod(optionflags=flags)
 | 
				
			||||||
 | 
					            print("{} failures out of {} tests".format(fail, total))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.. rubric:: Footnotes
 | 
					.. rubric:: Footnotes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.. [#] Examples containing both expected output and an exception are not supported.
 | 
					.. [#] Examples containing both expected output and an exception are not supported.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue