[issue34375] Subtests (unittest)

2018-08-10 Thread R. David Murray


R. David Murray  added the comment:

https://docs.python.org/3/library/unittest.html#distinguishing-test-iterations-using-subtests

--
nosy: +r.david.murray
resolution:  -> out of date
stage:  -> resolved
status: open -> closed

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue34375] Subtests (unittest)

2018-08-10 Thread Victor Porton


New submission from Victor Porton :

The following is a fragment of a real code:

~~~
def test_run_xinlude(self):
# stub_stdin(self, 
Global.get_resource_bytes("tests/core/data/xml/xinclude.xml"))
for next_script_mode in ['doc1', 'doc2']:
for order in ['breadth', 'depth']:
with capture_stdin_and_stdout():
command_line.main(['-r',
   order,
   'chain',
   
Global.get_filename("tests/core/data/xml/xinclude.xml"),
   '-u',
   
'http://portonvictor.org/ns/trans/precedence-include',
   '-s',
   next_script_mode])
self.assertEqual(sys.stdout.buffer.getvalue(), 
TestUtility.XInclude_output,
 "for next_script=%s, order=%s" % 
(next_script_mode, order))
~~~

I wrote it in one test method instead of four similar methods.

It has the deficiency that if the first test fails, the three remaining tests 
are skipped.

I propose to add `subtest` context manager to use it like:

~~~
with subtest():
with capture_stdin_and_stdout():
command_line.main(['-r',
   order,
   'chain',
   
Global.get_filename("tests/core/data/xml/xinclude.xml"),
   '-u',
   
'http://portonvictor.org/ns/trans/precedence-include',
   '-s',
   next_script_mode])
self.assertEqual(sys.stdout.buffer.getvalue(), 
TestUtility.XInclude_output,
 "for next_script=%s, order=%s" % 
(next_script_mode, order))
~~~

which would split our test into four independent tests.

--
components: Library (Lib)
messages: 323375
nosy: porton
priority: normal
severity: normal
status: open
title: Subtests (unittest)
type: enhancement
versions: Python 3.7

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com