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        )

テストユーザーをログインさせる関数.

Arguments:
  • username (str, optional): ログインするユーザー名(デフォルトは USERNAME
  • password (str, optional): ログインするパスワード(デフォルトは PASSWORD
Returns:

Response: ログインリクエストのレスポンス

def logout(self):
63    def logout(self):
64        """
65        テストユーザーをログアウトさせる関数.
66        """
67        self._client.get('/logout')

テストユーザーをログアウトさせる関数.

@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: 認証操作を提供するオブジェクト