test(cli): convert CLI shell tests to pytest test cases #1086
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
An initial attempt at unifying the testing approach 馃榿
This PR uses the
pytest-console-scripts
plugin and provides agitlab_cli()
wrapper for tests, so people can addgitlab
CL subcommands as a list and include variables (from the test case or from fixtures) to assert against.I'm unsure if this is really the best approach, but I've already been impressed while building this by how much more detail pytest provides for each error/failure, even when running CLI tests. If I did the fixtures right, they should also later be reusable for API functional tests. :P
For now I've not split the tests yet, to make reviews easier (1 shell test -> 1 pytest test), which makes the file quite long. I guess it would also make sense to split them. This would be better anyway, and this should make tests not depend on each other (I'm almost there even now - still have a few todos for some fixtures).
If this approach makes sense I can add some docs on how to contribute tests to make it more accessible for new contributors, :)
An example run is here: https://travis-ci.org/github/python-gitlab/python-gitlab/jobs/679739257
Edit: I've also not yet put this inside
gitlab/tests
yet, to avoid hacking the tox scripts, but I guess the structure will also be a topic