Skip to main content

为 API 测试创建基本 XNAT 实例

项目描述

https://github.com/australian-imaging-service/xnat4tests/actions/workflows/test.yml/badge.svg https://img.shields.io/pypi/v/xnat4tests.svg

Xnat4Tests 提供了一个辅助函数,用于测试访问 XNAT API 或容器服务的第三方工具,主要是一种在单个 Docker 容器中启动基本 XNAT 存储库实例的方法。

XNAT 容器服务插件默认安装并配置为使用与 XNAT 实例相同的 Docker 主机。

'home/logs', 'home/work', 'build', 'archive', 'prearchive' 目录从主机挂载到xnat4tests.config["xnat_root_dir"]下直接访问,这对于调试很有用并允许模拟在 XNAT 的容器服务中运行容器的环境。

除了启动 XNAT 实例的launch_xnat函数之外,还提供了一个连接 函数,该函数将 XnatPy 连接对象返回到测试实例

安装

Xnat4Tests 在 PyPI 上可用,因此安装,只需使用 pip

$ pip3 install xnat4tests

或包含在您的包的test_requires中。

用法

# Import xnat4tests functions
from xnat4tests import launch_xnat, stop_xnat, connect, config

# Launch the instance (NB: it takes quite while for an XNAT instance to start). If an existing
# container with the reserved name is already running it is returned instead
launch_xnat()

# Run your tests
with connect() as login:
    PROJECT = 'MYPROJECT'
    SUBJECT = 'MYSUBJECT'
    SESSION = 'MYSESSION'

    login.put(f'/data/archive/projects/MY_TEST_PROJECT')

    # Create subject
    xsubject = login.classes.SubjectData(label=SUBJECT,
                                         parent=login.projects[PROJECT])
    # Create session
    login.classes.MrSessionData(label=SESSION, parent=xsubject)

assert [p.name for p in (config.XNAT_ROOT_DIR / 'archive').iterdir()] == [PROJECT]

# Remove the container after you are done (not strictly necessary)
stop_xnat()

或者,如果您使用的是 Pytest,那么您可以将连接设置为conftest.py中的夹具

@pytest.fixture(scope='session')
def xnat_login():
    xnat4tests.launch_xnat()
    yield xnat4tests.connect()
    xnat4tests.stop_xnat()

项目详情


下载文件

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

内置分布

xnat4tests-0.2.5-py3-none-any.whl (14.2 kB 查看哈希

已上传 py3