New submission from Martin Panter:

The documentation for "unittest.TestCase" says "the standard implementation of 
the default 'methodName', runTest(), will run every method starting with 'test' 
as an individual test". However:

>>> from unittest import *
>>> class Test(TestCase):
...     def test_method(self): pass
... 
>>> t = Test()
>>> t.run()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3.4/unittest/case.py", line 552, in run
    testMethod = getattr(self, self._testMethodName)
AttributeError: 'Test' object has no attribute 'runTest'

After further experimentation, I see that if my test method is called 
"runTest", it can be automatically discovered, but only if there are no other 
test- prefixed methods.

Perhaps you could drop the end of the second paragraph for TestCase, so that it 
just reads:

Each instance of TestCase will run a single base method: the method named 
"methodName".

I think the details about the test- prefix and counting results are covered 
elsewhere, and in most uses you wouldn't instantiate a TestCase yourself, so 
changing the method name is irrelevant.

Also, perhaps under "TestLoader.loadTestsFromTestCase" it should say:

If no methods with the usual name prefix are found, but the "runTest" method is 
implemented, there will be a single test case using that method.

----------
assignee: docs@python
components: Documentation
messages: 224907
nosy: docs@python, vadmium
priority: normal
severity: normal
status: open
title: There is no standard TestCase.runTest implementation
versions: Python 3.4, Python 3.5

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue22153>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to