Textual应用程序的快照测试
项目描述
pytest-textual-snapshot
pytest插件,用于对Textual应用程序进行快照测试。
安装
使用pip
安装
pip install pytest-textual-snapshot
安装后,将自动提供snap_compare
fixture。
关于
pytest-textual-snapshot
测试会将运行的Textual应用程序的SVG屏幕截图保存到磁盘。下次测试运行时,它将再次进行屏幕截图并将其与保存的屏幕截图进行比较。如果新屏幕截图与旧屏幕截图不同,则测试失败。这是一种快速自动检测应用程序中视觉回归的便捷方法。
用法
运行测试
您可以使用pytest
正常运行测试。您可以使用pytest-xdist
并行运行测试。
我的快照测试失败了,我该怎么办?
如果您的快照测试失败,这意味着测试会话期间拍摄的屏幕截图与最后一次拍摄的屏幕截图不同。这种变化会在失败报告中显示,您将在失败事件中收到链接。
如果失败报告中显示的diff看起来正确,您可以通过运行带有--snapshot-update
标志的pytest
来更新磁盘上的快照。
编写测试
基本用法
将 snap_compare
固件注入到您的测试中,并使用应用程序实例或 Textual 应用程序的路径(包含 App
子类的文件)调用它。
def test_my_app(snap_compare):
app = MyTextualApp() # a *non-running* Textual `App` instance
assert snap_compare(app)
def test_something(snap_compare):
assert snap_compare("path/to/app.py")
按键操作
在截图之前可以模拟按键操作。
def test_something(snap_compare):
assert snap_compare("path/to/app.py", press=["tab", "left", "a"])
截图前的代码运行
您可以使用 run_before
参数在捕获截图之前运行一些代码。
def test_something(snap_compare):
async def run_before(pilot: Pilot):
await pilot.press("ctrl+p")
# You can run arbitrary code before the screenshot occurs:
await disable_blink_for_active_cursors(pilot)
await pilot.press(*"view")
assert snap_compare(MyApp(), run_before=run_before)
自定义终端大小
如果您需要更改终端大小(例如,以适应更多内容或测试与布局相关的代码),您可以调整 terminal_size
参数。
def test_another_thing(snap_compare):
assert snap_compare(MyApp(), terminal_size=(80, 34))
快速在编辑器中打开路径
如果您传递了 snap_compare
的路径,您可以通过设置基于您想使用的编辑器的 TEXTUAL_SNAPSHOT_FILE_OPEN_PREFIX
环境变量来快速在编辑器中打开该路径。点击快照报告中的路径将在编辑器中打开路径。
file://
- 默认,很可能是打开在浏览器中code://file/
- 在 VS Code 中打开路径cursor://file/
- 在 Cursor 中打开路径pycharm://
- 在 PyCharm 中打开路径
项目详情
下载文件
下载您平台上的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源分布
pytest_textual_snapshot-1.0.0.tar.gz (11.1 kB 查看哈希值)
构建分布
关闭
pytest_textual_snapshot-1.0.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 065217055ed833b8a16f2320a0613f39a0154e8d9fee63535f29f32c6414b9d7 |
|
MD5 | bb7c5d3259eb51b3a1b7f93ed7689285 |
|
BLAKE2b-256 | 8b752ef17ae52fa5bc848ff2d1d7bc317a702cbd6d7ad733ca991b9f899dbbae |
关闭
pytest_textual_snapshot-1.0.0-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | dd3a421491a6b1987ee7b4336d7f65299524924d2b0a297e69733b73b01570e1 |
|
MD5 | 34ea8cc4d96580e3a0b64b8395af723a |
|
BLAKE2b-256 | 702e4bf16ed78b382b3d7c1e545475ec8cf04346870be662815540faf8f16e8c |