The template integration still contains unittest.TestCase based unit tests. We want to rewrite them to standalone pytest test functions.
The Home Assistant core standard is to write tests as standalone pytest test functions. We still have some old tests that are based on unittest.TestCase. We want all these tests to be rewritten as pytest test functions.
Here are the docs for pytest: https://docs.pytest.org/en/stable/
Here's an example of an async pytest test function in Home Assistant core:
There are many pytest fixtures to help writing the tests. See:
hass which will set up a HomeAssistant instance and start it.Here's an example of a pull request that rewrote a module of unittest.TestCase tests to standalone pytest test functions:
https://github.com/home-assistant/core/pull/40749
Here's an example command to run a single test module with pytest inside tox on Python 3.8:
tox -e py38 -- --cov-report term-missing --cov=homeassistant.components.command_line.switch tests/components/command_line/test_switch.py
It will print coverage information with lines that are missing coverage.
Hi! I've put in a pull request to fix this. The tests converted easily, with the async functions used instead of the non-async, and mocks moved into a using block instead of a decorator.
@dmonego
I made a pr 10 days ago (#41098). You can see it above your comment.
So it's a possible duplicate although I don't really know about best practices, e.g. if a decorator is more readable/useful than a with block.
@sycx2 Looks like it's the same PR, so mine can be closed. Thanks for the tip about the mock library.
Most helpful comment
@sycx2 Looks like it's the same PR, so mine can be closed. Thanks for the tip about the mock library.