i have a codebase to test and I use pytest and streamlit AppTest class for testing my codebase.
The concern is in the project root dir i have a file named conftest.py and in this file i am setup and tear down test resources however i am getting issue i.e *WARNING streamlit.runtime.state.session_state_proxy: Session state does not function when running a script without streamlit run*
i have tried
'''
conftest
========
SetUp and TearDown resource
'''
import pytest
from app.ui.Elements.test import setup_testing_resource, cleanup_testing_resource
@pytest.fixture(scope="session", autouse=True)
def setup_and_teardown():
# Setup code before running tests
setup_testing_resource()
# Control to the test functions
yield
# Teardown code after all tests are completed
cleanup_testing_resource()
i am getting issue on the statement “snowflake_session = connection.Connection.get()”
Ensure that the setup and teardown processes do not depend on Streamlit’s session state (or other functionalities). If the connection setup (e.g., snowflake_session = connection.Connection.get() ) relies on Streamlit’s session state, consider refactoring to remove this dependency for testing purposes.
For testing parts of your codebase that do require Streamlit’s session state, consider using mock objects to simulate Streamlit’s behavior. Python’s unittest.mock module can be very helpful here:
from unittest.mock import patch
@pytest.fixture(scope="session", autouse=True)
def setup_and_teardown():
with patch('streamlit.session_state', new_callable=MockSessionState):
setup_testing_resource()
yield
cleanup_testing_resource()
Hope this helps!
Kind Regards,
Sahir Maharaj
Data Scientist | AI Engineer