Using Simulations
Simulations are meant for test arrangement, sometimes called “test setup”. For example, sending an API request to prepare resources, triggering a push notification, or simulating location updates.
Using the tester fixture
The tester fixture provides the skeleton to run a simulation in your tests.
To run a simulation, you simply need to use with the context manager syntax.
def test_example(tester: Tester):
with tester.simulations.location_update(lat=0.001, lng=0.001): # <-- trigger a simulation
pass # <-- perform assertions here
There are various available simulations in tester.simulations that you can use:
location_update: Triggering location updates.push_notification: Pushing a notification to the app.
Writing a new Simulation
Similar to Screen, the purpose of having Simulation is to make your logic readable and reusable. To write a new simulation, you just need to subclass Simulation and place it under e2e_ext/simulations.
from e2e_ext.core import Simulation
class PrepareDataSimulation(Simulation):
def run(self, **kwargs):
pass # <-- Implement your logic here
Creating a new Simulation
For convenience, we provide the CLI usage for you to quickly create a new simulation from templates.
$ e2e new simulation [name_in_snake_case]
For example, to create a “prepare data” simulation, run:
$ e2e new simulation prepare_data
When running the above command, the sample code is generated under e2e_ext/simulations/prepare_data.py. Your task is now filling in the code needed in this file.
Another cool thing is that the type hints in e2e_ext/_typing.py is also automatically updated. This helps facilitate the autocompletion of the code editor.