[Python] How to mock functions in streamlit unit tests?

Discussão em 'Python' iniciado por Stack, Abril 8, 2025.

  1. Stack

    Stack Membro Participativo

    I have a streamlit app, for which I'd like to create unit tests. I am unable to mock objects though. I have a foo.py with the following content:

    import streamlit as st

    def dialog_func():
    result = dummy_func()
    st.write(result)

    def dummy_func():
    return 'foo'

    dialog_func()


    and the following corresponding test_foo.py:

    from unittest.mock import patch

    from streamlit.testing.v1 import AppTest

    def test_foo():
    with patch("foo.dummy_func") as mock_dummy_func:
    mock_dummy_func.return_value ='bar'
    at = AppTest.from_file("foo.py").run()
    assert at.markdown[0].value == 'bar'


    Running this shows, that patching the method does not work and 'foo' is returned instead of 'bar':

    $ pytest test_foo.py
    ...
    ======================================= short test summary info =======================================
    FAILED test_foo.py::test_foo - AssertionError: assert 'foo' == 'bar'
    ========================================== 1 failed in 0.26s ==========================================

    Continue reading...

Compartilhe esta Página