Skip to content

Instantly share code, notes, and snippets.

@hodunov
Created November 13, 2021 14:51
Show Gist options
  • Save hodunov/6cde94cae54a50900a85b14b2ec7e7b7 to your computer and use it in GitHub Desktop.
Save hodunov/6cde94cae54a50900a85b14b2ec7e7b7 to your computer and use it in GitHub Desktop.
OOP tests.py
# bad
user = {"first_name": "John", "last_name": "Doe"}
full_name = f"{user['first_name']} {user['last_name']}"
# better
class User:
def __init__(self, first_name, last_name):
self.first_name = first_name
self.last_name = last_name
def full_name(self):
return f"{self.first_name} {self.last_name}"
user = User(first_name='John', last_name='Doe')
print(user.full_name())
# Good test
def test_full_name_consists_of_first_name_and_last_name():
# arrange
first_name = 'John'
last_name = 'Doe'
user = User(first_name=first_name, last_name=last_name)
# act
full_name = user.full_name()
# assert
assert full_name == "John Doe"
test_full_name_consists_of_first_name_and_last_name()
class InMemoryUserReposity:
def __init__(self):
self._users = []
def add(self, user):
self._users.append(user)
def get_by_first_name(self, first_name):
return next(
user for user in self._users if user.first_name == first_name
)
first_name = 'John'
last_name = 'Doe'
user = User(first_name=first_name, last_name=last_name)
repository = InMemoryUserReposity()
repository.add(user)
# BAD
def test_add():
first_name = 'John'
last_name = 'Doe'
user = User(first_name=first_name, last_name=last_name)
repository = InMemoryUserReposity()
repository.add(user)
assert user in repository._users
def test_get_by_first_name():
first_name = 'John'
last_name = 'Doe'
user = User(first_name=first_name, last_name=last_name)
repository = InMemoryUserReposity()
repository._users = [user]
user_from_repo = repository.get_by_first_name(first_name)
assert user_from_repo == user
# GOOD TEST:
def test_added_user_can_be_retrieved_by_first_name():
first_name = 'John'
last_name = 'Doe'
user = User(first_name=first_name, last_name=last_name)
repository = InMemoryUserReposity()
repository.add(user)
assert user == repository.get_by_first_name(user.first_name)
import pytest
class Player:
def __init__(self, username):
if len(username) < 1:
raise Exception("Username bust not be empty.")
self._username = username
@property
def username(self):
return self._username
def test_user_with_valid_username():
username = "John"
assert Player(username=username).username == username
def test_user_error():
username = ""
with pytest.raises(Exception):
Player(username)
test_user_with_valid_username()
test_user_error()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment