App testing
Streamlit 应用程序测试框架使开发人员能够构建和运行无头测试,直接执行应用程序代码、模拟用户输入并检查渲染输出的正确性。
所提供的 AppTest 类可模拟运行中的应用程序,并提供通过 API(而非浏览器 UI)设置、操作和检查应用程序内容的方法。它可用于编写各种场景下的应用程序自动测试。然后可以使用 pytest 等工具运行这些测试。一个典型的模式是为一个应用程序构建一套测试,以确保该应用程序在演进过程中功能的一致性,并在本地和/或 Github Actions 等 CI 环境中运行这些测试。
The AppTest class
st.testing.v1.AppTest
一个模拟 Streamlit 应用程序,用于检查显示元素和输出的正确性。
AppTest 的实例可模拟运行中的 Streamlit 应用程序。该类提供了通过 API(而非浏览器用户界面)设置、操作和检查应用程序内容的方法。它可用于编写各种场景下的应用程序自动测试。然后可以使用 pytest 等工具运行这些测试。
AppTest 可通过三个类方法之一进行初始化:
st.testing.v1.AppTest.from_file(推荐使用)
st.testing.v1.AppTest.from_string
st.testing.v1.AppTest.from_function
初始化完成后,就可以更新会话状态和部件值,并运行脚本。与实际实时运行的 Streamlit 应用程序不同,在更改部件值后,您需要显式调用 AppTest.run()来重新运行应用程序。切换页面也需要显式调用 AppTest.run()。
AppTest 使开发人员能以熟悉的 python 测试格式在应用程序上按原样构建测试,而无需进行重大重构或抽象出与用户界面分开测试的逻辑。测试能以极低的开销快速运行。典型的模式是为应用程序构建一套测试,以确保在应用程序演进过程中保持功能一致,并在本地和/或 Github Actions 等 CI 环境中运行测试。
注意事项
AppTest 仅支持在每个实例中测试应用程序的单个页面。对于多页面应用程序,每个页面都需要单独测试。目前还没有在 AppTest 中以编程方式切换页面的方法。
Initialize a simulated app using AppTest
AppTest.from_file
创建 AppTest 实例来模拟文件中定义的应用程序页面。
此选项最适合 CI 工作流和已发布应用程序的测试。脚本本身必须是可执行的,因此必须包含所有必要的导入。
Function signature[source] | |
---|---|
AppTest.from_file(cls, script_path, *, default_timeout=3) |
|
Returns | |
(AppTest) |
A simulated Streamlit app for testing. The simulated app can be executed via .run(). |
Parameters | |
script_path (str) |
Path to a script file. The path should be absolute or relative to the file calling .from_file. |
default_timeout (float) |
Default time in seconds before a script run is timed ou |