跳转到主要内容

Textual应用程序的快照测试

项目描述

pytest-textual-snapshot

pytest插件,用于对Textual应用程序进行快照测试。

image

安装

使用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-py3-none-any.whl (11.2 kB 查看哈希值)

上传时间 Python 3

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面