tests.conftest
1import pytest 2from hanabiapp import create_app, db 3from hanabiapp.models.user import User 4 5USERNAME = 'test-user' 6PASSWORD = 'test-password' 7 8@pytest.fixture 9def client(): 10 """ 11 テスト用の Flask クライアントを作成する pytest のフィクスチャ. 12 13 - アプリケーションをテストモードで作成し,データベースを初期化する. 14 - テストユーザーを作成し,データベースに追加する. 15 - テストクライアントを提供し,テスト完了後にデータベースを削除する. 16 17 Returns: 18 FlaskClient: テスト用のクライアント 19 """ 20 app = create_app({'TESTING' : True}) 21 22 with app.app_context(): 23 db.create_all() 24 user = User(username=USERNAME) 25 user.set_password(PASSWORD) 26 db.session.add(user) 27 db.session.commit() 28 29 yield app.test_client() 30 db.session.remove() 31 db.drop_all() 32 33class AuthActions(object): 34 """ 35 認証関連のアクション(ログイン・ログアウト)を管理するクラス. 36 """ 37 def __init__(self, client): 38 """ 39 AuthActions のコンストラクタ. 40 41 Args: 42 client (FlaskClient): テスト用のクライアント 43 """ 44 self._client = client 45 46 def login(self, username=USERNAME, password=PASSWORD): 47 """ 48 テストユーザーをログインさせる関数. 49 50 Args: 51 username (str, optional): ログインするユーザー名(デフォルトは `USERNAME`) 52 password (str, optional): ログインするパスワード(デフォルトは `PASSWORD`) 53 54 Returns: 55 Response: ログインリクエストのレスポンス 56 """ 57 return self._client.post( 58 '/login', 59 data={'username' : username, 'password' : password} 60 ) 61 62 def logout(self): 63 """ 64 テストユーザーをログアウトさせる関数. 65 """ 66 self._client.get('/logout') 67 68@pytest.fixture 69def auth(client): 70 """ 71 認証関連の操作を提供する pytest のフィクスチャ. 72 73 Args: 74 client (FlaskClient): テスト用のクライアント 75 76 Returns: 77 AuthActions: 認証操作を提供するオブジェクト 78 """ 79 return AuthActions(client)
USERNAME =
'test-user'
PASSWORD =
'test-password'
@pytest.fixture
def
client():
9@pytest.fixture 10def client(): 11 """ 12 テスト用の Flask クライアントを作成する pytest のフィクスチャ. 13 14 - アプリケーションをテストモードで作成し,データベースを初期化する. 15 - テストユーザーを作成し,データベースに追加する. 16 - テストクライアントを提供し,テスト完了後にデータベースを削除する. 17 18 Returns: 19 FlaskClient: テスト用のクライアント 20 """ 21 app = create_app({'TESTING' : True}) 22 23 with app.app_context(): 24 db.create_all() 25 user = User(username=USERNAME) 26 user.set_password(PASSWORD) 27 db.session.add(user) 28 db.session.commit() 29 30 yield app.test_client() 31 db.session.remove() 32 db.drop_all()
テスト用の Flask クライアントを作成する pytest のフィクスチャ.
- アプリケーションをテストモードで作成し,データベースを初期化する.
- テストユーザーを作成し,データベースに追加する.
- テストクライアントを提供し,テスト完了後にデータベースを削除する.
Returns:
FlaskClient: テスト用のクライアント
class
AuthActions:
34class AuthActions(object): 35 """ 36 認証関連のアクション(ログイン・ログアウト)を管理するクラス. 37 """ 38 def __init__(self, client): 39 """ 40 AuthActions のコンストラクタ. 41 42 Args: 43 client (FlaskClient): テスト用のクライアント 44 """ 45 self._client = client 46 47 def login(self, username=USERNAME, password=PASSWORD): 48 """ 49 テストユーザーをログインさせる関数. 50 51 Args: 52 username (str, optional): ログインするユーザー名(デフォルトは `USERNAME`) 53 password (str, optional): ログインするパスワード(デフォルトは `PASSWORD`) 54 55 Returns: 56 Response: ログインリクエストのレスポンス 57 """ 58 return self._client.post( 59 '/login', 60 data={'username' : username, 'password' : password} 61 ) 62 63 def logout(self): 64 """ 65 テストユーザーをログアウトさせる関数. 66 """ 67 self._client.get('/logout')
認証関連のアクション(ログイン・ログアウト)を管理するクラス.
AuthActions(client)
38 def __init__(self, client): 39 """ 40 AuthActions のコンストラクタ. 41 42 Args: 43 client (FlaskClient): テスト用のクライアント 44 """ 45 self._client = client
AuthActions のコンストラクタ.
Arguments:
- client (FlaskClient): テスト用のクライアント
def
login(self, username='test-user', password='test-password'):
47 def login(self, username=USERNAME, password=PASSWORD): 48 """ 49 テストユーザーをログインさせる関数. 50 51 Args: 52 username (str, optional): ログインするユーザー名(デフォルトは `USERNAME`) 53 password (str, optional): ログインするパスワード(デフォルトは `PASSWORD`) 54 55 Returns: 56 Response: ログインリクエストのレスポンス 57 """ 58 return self._client.post( 59 '/login', 60 data={'username' : username, 'password' : password} 61 )
@pytest.fixture
def
auth(client):
69@pytest.fixture 70def auth(client): 71 """ 72 認証関連の操作を提供する pytest のフィクスチャ. 73 74 Args: 75 client (FlaskClient): テスト用のクライアント 76 77 Returns: 78 AuthActions: 認証操作を提供するオブジェクト 79 """ 80 return AuthActions(client)
認証関連の操作を提供する pytest のフィクスチャ.
Arguments:
- client (FlaskClient): テスト用のクライアント
Returns:
AuthActions: 認証操作を提供するオブジェクト