This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author porton
Recipients porton
Date 2018-08-10.17:56:26
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1533923786.85.0.56676864532.issue34375@psf.upfronthosting.co.za>
In-reply-to
Content
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.
History
Date User Action Args
2018-08-10 17:56:26portonsetrecipients: + porton
2018-08-10 17:56:26portonsetmessageid: <1533923786.85.0.56676864532.issue34375@psf.upfronthosting.co.za>
2018-08-10 17:56:26portonlinkissue34375 messages
2018-08-10 17:56:26portoncreate