[ovirt-devel] [VDSM] Moving to py.test

Roman Mohr rmohr at redhat.com
Thu Mar 10 13:52:55 UTC 2016


On Thu, Mar 10, 2016 at 2:15 PM, Nir Soffer <nsoffer at redhat.com> wrote:
> Hi all,
>
> In the last vdsm call we discussed moving to py.test.
>
> Here is how to run the current tests with py.test:
>
>     cd tests
>     PYTHONPATH=../lib:../vdsm py.test -v *_test.py *_tests.py *Tests.py network
>
> Currently we have some failures and errors:
>
>     8 failed, 1662 passed, 101 skipped, 14 pytest-warnings, 10 error
> in 86.05 seconds
>
> Some py.test nice tricks:
>
> Finding the 10 slowest tests:
>
>     PYTHONPATH=../lib:../vdsm py.test -v --durations=10 vmTests.py
> *_test.py *_tests.py *Tests.py network
>
> Checking code coverage:
>
>     PYTHONPATH=../lib:../vdsm py.test -v --cov=../vdsm --cov=vdsm
> *_test.py *_tests.py *Tests.py network
>
> Once we finish moving vdsm code to lib/vdsm, renaming the tests to
> *_test.py, and add
> pytest.ini, running the test will be simply:
>
>     py.test
>
> Once all the tests pass, we can:
>
> - Drop all the special asserts (assertXXX), py.test uses plain asserts
>   https://pytest.org/latest/assert.html#asserting-with-the-assert-statement
>
> - Get better error reports
>   https://pytest.org/latest/example/reportingdemo.html
>
> - Remove unneeded classes, or inherit from any class
>   https://pytest.org/latest/getting-started.html
>
> - Replace @permutations with more powerfull @pytest.mark.parametrize
>   https://pytest.org/latest/parametrize.html#parametrize-basics
>
> - Replace slowtest and stresstest with @pytest.mark
>   https://pytest.org/latest/mark.html
>
> - Replace monkeypatch.py with simpler and more powerfull pytest
> monkeypatch funcarg
>   https://pytest.org/latest/monkeypatch.html#monkeypatching-mocking-modules-and-environments
>
> - Replace NamedTemporaryDir with pytest tmpdir funcarg
>   https://pytest.org/latest/getting-started.html#going-functional-requesting-a-unique-temporary-directory
>
> - Simplify complex context managers with pytest fixtures
>   https://pytest.org/latest/example/simple.html
>
> - Drop testrunner.py, most of testlib.py, some of testValidation.py,
> run_tests*.sh
>
> - And more
>

+1 Great work! My favourite python testing framework :)

> Nir
> _______________________________________________
> Devel mailing list
> Devel at ovirt.org
> http://lists.ovirt.org/mailman/listinfo/devel



More information about the Devel mailing list