Opened 3 years ago

Last modified 2 months ago

#28452 new New feature

Consider adding a test command argument --locals to show traceback locals

Reported by: David Sanders Owned by: nobody
Component: Testing framework Version: master
Severity: Normal Keywords:
Cc: Triage Stage: Someday/Maybe
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description (last modified by David Sanders)

I'd like to suggest adding an argument to the test command, --locals, that simply passes tb_locals=True to unittest.TextTestRunner().

Currently it looks as though support for adding custom test runner kwargs was improved in 1.11 with ticket #26981 whereby one can provide a custom test runner and override get_test_runner_kwargs() however I think it would be nice to be able to examine locals without having to setup a custom test runner.

Please note that the tb_locals argument was introduced in Python 3.5, so this would need to be taken into consideration.

Change History (5)

comment:1 Changed 3 years ago by David Sanders

Description: modified (diff)
Version: 1.11master

comment:2 Changed 3 years ago by David Sanders

Comment from jtiai on #django:

About #28452 Well it might generate quite lot of output and it potentially can output secrets that you don't want to leak out.

comment:3 Changed 3 years ago by Tim Graham

There might be some risk of heading down the path of reimplementing many features of pytest. How do we decide which of those features to add to Django?

comment:4 Changed 3 years ago by Tim Graham

Triage Stage: UnreviewedSomeday/Maybe

It would probably be best to reach a consensus on the DevelopersMailingList before proceeding.

comment:5 Changed 2 months ago by Adam (Chainz) Johnson

Well it might generate quite lot of output

A valid concern, but normally more output is better for debugging. Most functions have a handful of locals. Pytest shows locals by default as well, so there's a precedent.

it potentially can output secrets that you don't want to leak out.

I don't think this is much of a concern, normally those with the ability to see test results already have the ability to see or run the test code, and thus find the secrets. Additionally, many test assertions already can output secrets.

There might be some risk of heading down the path of reimplementing many features of ​pytest.

I agree, we don't want Django's test framework to reinvent the wheel. But this feature is only providing the ability to use something already within unittest.

I'd be in favour of passing tb_locals=True always, instead of adding a flag to make it optional. Using a flag would make the feature hard to discover feature and "yet another thing to think about." Users can override the test runner themselves as shown to undo this change if they want.

Note: See TracTickets for help on using tickets.
Back to Top