Use “get” methods to help writing more testable code
Imagine you have the following code
1 2 3 4 |
def do_something(): users = User.objects.filter(dob__gte='1980-01-01') for user in users: # do something to user |
If you were writing unit test against do_something(), you would need to do some complex mocking on User.objects.filter() to return some mock up data. But this can be easily prevented by refactoring into a separate get_users() method as below:
1 2 3 4 5 6 7 |
def get_users(): return User.objects.filter(dob__gte='1980-01-01') def do_something(): users = get_users() for user in users: # do something to user |
This way, you can just mock get_users() to… Read More »