跳转到主要内容

帮助编写Datasette插件和应用程序测试的实用程序

项目描述

datasette-test

PyPI Tests Changelog License

帮助编写Datasette插件和应用程序测试的实用程序

安装

使用pip安装此库

pip install datasette-test

使用插件配置的测试

Datasette 1.0a8强制执行了配置更改,其中插件不再在元数据中配置,而是使用配置文件。

这可能导致使用Datasette(metadata={"plugins": {"...": "..."}})模式测试插件配置的项目出现测试失败。

您可以使用datasette_test.Datasette来解决此问题,这是一个子类,它适用于此破坏性更改之前和之后的Datasette版本

from datasette_test import Datasette
import pytest

@pytest.mark.asyncio
async def test_datasette():
    ds = Datasette(plugin_config={"my-plugin": {"config": "goes here"})

此子类会检测底层插件是否需要在元数据或配置中进行配置,并正确实例化类。

您还可以在使用metadata={"plugins": ...}的情况下使用此类 - 类会将该配置移动到配置中,当需要时。

permissions=便利参数

Datasette 1.0a引入了一种更方便的方法来直接在配置中定义权限

ds = Datasette(config={"permissions": {"view-instance": {"id": "root"}}})

此方法在Datasette 1.0之前不支持 - 但您可以在datasette_test.Datasette中使用permissions=参数来达到相同的效果

ds = Datasette(permissions={"view-instance": {"id": "root"}})

这将适用于两个主要版本的Datasette。

wait_until_responds(url, timeout=5.0)

一些Datasette插件测试套件启动Datasette服务器,然后在继续之前需要等待该服务器变得可用。

调用此函数以等待服务器变得可用,如果超过超时时间则引发错误

from datasette_test import wait_until_responds

def test_server():
    # ... start server ...
    wait_until_responds("http://localhost:8001")
    # Now run tests

actor_cookie(datasette, actor)

相当于Datasette 1.0a+中的datasette.client.actor_cookie()。示例用法

@pytest.mark.asyncio
async def test_permissions():
    ds = Datasette(permissions={"view-instance": {"id": "root"}})
    response = await ds.client.get("/")
    assert response.status_code == 403
    response = await ds.client.get(
        "/", cookies={"ds_actor": actor_cookie(ds, {"id": "root"})}
    )
    assert response.status_code == 200

开发

要为此库做出贡献,请首先检出代码。然后创建一个新的虚拟环境

cd datasette-test
python -m venv venv
source venv/bin/activate

现在安装依赖项和测试依赖项

pip install -e '.[test]'

运行测试

pytest

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源代码分布

datasette_test-0.3.2.tar.gz (7.7 kB 查看哈希)

上传时间 源代码

构建分布

datasette_test-0.3.2-py3-none-any.whl (7.7 kB 查看哈希)

上传时间 Python 3

由以下机构支持