[wp-trac] [WordPress Trac] #53119: Tests: introduce naming conventions for data providers and use named test cases
WordPress Trac
noreply at wordpress.org
Fri Apr 30 15:58:51 UTC 2021
#53119: Tests: introduce naming conventions for data providers and use named test
cases
------------------------------+-----------------------------
Reporter: jrf | Owner: (none)
Type: task (blessed) | Status: new
Priority: normal | Milestone: Awaiting Review
Component: Build/Test Tools | Version:
Severity: normal | Keywords:
Focuses: docs |
------------------------------+-----------------------------
A number of tests use dataproviders - functions which return a multi-level
array of test cases, where each sub-array is a set of parameters to pass
to the actual test function -.
Also see: https://phpunit.readthedocs.io/en/9.5/writing-tests-for-
phpunit.html?#data-providers
Currently there are:
* No naming conventions for data providers - the functions are called
whatever the author wanted to call them.
* No placement conventions for data providers - sometimes the functions
are at the top of a file, sometimes at the bottom, sometimes just before
or after the test function using them.
I'd like to recommend streamlining this a little more to:
1. Make it more obvious which functions are data providers.
2. Make the data providers easier to find.
With that in mind, I'm proposing:
1. That the function name of all data provider functions starts with
`data_`, similar to how all test functions are prefixed with `test_`.
2. That data providers when used by only one test are placed directly
after that test.
3. That data providers when used by multiple tests which directly follow
each other, are placed directly after the last test using the data
provider.
4. That data providers used by multiple tests throughout a test file are
placed at the bottom of the class.
Additionally, there is an awesome, but little known feature in PHPUnit
which allows to "name" each test case in a data provider by adding an
index key for each test data set.
This will make test failure information more descriptive and will make the
test case which is causing the failure easier to find than having the
default numeric indexes for test cases.
And when coupled with the `--testdox` feature, especially when selectively
running a filtered set of tests will make it much more obvious what is
being tested.
So I'd also like to recommend implementing the use of named test cases
when using data providers.
To illustrate the difference:
Screenshot of a test run with a dataprovider and `--testdox` without using
named test cases:
https://speakerdeck.com/jrf/my-top-10-phpunit-tips-and-tricks-
e6ea54ce-2515-4ea9-aacf-9bf7ab3b3141?slide=26
Screenshot of a test run with a dataprovider and `--testdox` WITH named
test cases:
https://speakerdeck.com/jrf/my-top-10-phpunit-tips-and-tricks-
e6ea54ce-2515-4ea9-aacf-9bf7ab3b3141?slide=28
Code sample of how to implement this:
https://speakerdeck.com/jrf/my-top-10-phpunit-tips-and-tricks-
e6ea54ce-2515-4ea9-aacf-9bf7ab3b3141?slide=27
Once this ticket has been actioned, I'd like to recommend that the
conventions applied will be added to the Core contributors handbook.
/cc @hellofromTonya
--
Ticket URL: <https://core.trac.wordpress.org/ticket/53119>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform
More information about the wp-trac
mailing list