帮助编写Datasette插件和应用程序测试的实用程序
项目描述
datasette-test
帮助编写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的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 69e76695e713e5900b831eb34172f89553386c0aa50b9909a33e41c490825887 |
|
MD5 | 5edfe9409b5528e99fadb4b57e331818 |
|
BLAKE2b-256 | 677640202239b88b9ccebe980e377df5d5c3661477497f0f42d333175524901c |
关闭
datasette_test-0.3.2-py3-none-any.whl的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 894e0267977a6cfd7aef1a930c3cdcc43e7fd25592a48c611a15380b8952f51e |
|
MD5 | fba9d595c570ee3d9ac082cf61469a2c |
|
BLAKE2b-256 | 085043ed3ed434539ea47aea323d135a9f0df74df4276785431cd996f70cb0a4 |