It’s usually good practice to have automated unit tests while developing your code. Doing so helps you find bugs early in the development cycle and saves you time in the long run. These tests can be run by the developer multiple times to verify the behavior of a particular unit of code for different sets of input.
Unit tests essentially check the behavior of a particular unit of the code or the function, and are written by the developers who are implementing the functionalities.
We test the behavior of a function before it becomes part of the whole system and goes to production by writing a piece of code to test this behavior under different conditions. Usually a function gets tested in isolation with the other functions of the system under test (SUT).