Testing DeviceHelper with PyTest
| Level | beginner |
| Repo | https://github.com/NetAutLabs/python_pytest_device_helper |
| Discussion | Discussion GitHub Repo |
| Codespaces | GitHub Codespaces |
Lab Goal
The goal of this lab is to learn and understand the differences between three testing approaches: "monkey patching", using pytest-mock, and creating "fake objects". You will work on a Python project with five test files, but only the three mentioned below contain TODOs that need fixing.
Objectives
-
Monkey Patching:
- Explore how to dynamically modify or replace methods and attributes in your code during runtime.
- Complete the TODOs in
tests/test_device_helper_01_monkeypatch.py.
-
pytest-mock:
- Learn how to use the
pytest-mocklibrary to create and manage mock objects. - Discover how mocking can help isolate the code under test and verify interactions.
- Complete the TODOs in
tests/test_device_helper_02_mock.py.
- Learn how to use the
-
Fake Objects:
- Implement fake objects that provide simplified, yet working, implementations of dependencies.
- Recognize when and why to use fake objects over mocks or monkey patching.
- Complete the TODOs in
tests/test_device_helper_03_fakedevice.py.
Additional Information:
- The test files are located in the
testsdirectory, but onlytests/test_device_helper_01_monkeypatch.py,tests/test_device_helper_02_mock.py, andtests/test_device_helper_03_fakedevice.pycontain TODOs that require your attention. - These tests are marked with
xfailto indicate that they are expected to fail. After you implement the necessary changes, remove thexfailmarkers. -
To run and check the tests, use the following command:
-
Test execution needs to be under one second.