跳转到主要内容

Schul-Cloud 内容API

项目描述

Build Status Python Package Index Dockerhub Automated Build Status First Timers

此存储库是Schul-Cloud-Resources API的测试和参考实现。其目的是

  • 有一个参考来验证API规范实际上是否可行

  • API规范中寻找不确定性

  • 提供测试以加快在其他服务器(如schulcloud-content)上实现API的速度

  • 让人们通过贡献测试作为应用程序之间通信的一种方式:一个测试,X个服务器实现

  • 为爬虫实现和测试提供一个易于设置的简单服务器

此存储库包含

  • 一个用于测试抓取器的服务器

  • 用于测试服务器的测试

该软件包在Python 2和3下都能工作。

您可以在http://scrst.quelltext.eu/查看实时docker实例。

安装

使用

pip

,您可以安装所有依赖项,如下所示

pip install --user schul_cloud_resources_server_tests

完成后,您可以导入包。

import schul_cloud_resources_server_tests

开发版安装

如果您想在此模块上工作,您需要以不同的方式安装它。如果您将其设置为开发环境,您可以添加新的测试和功能。

首先,您需要安装git。然后,克隆存储库

git clone https://github.com/schul-cloud/schul_cloud_resources_server_tests.git
cd schul_cloud_resources_server_tests

如果您已安装

pip

,您现在可以安装这些包

pip install --user -r requirements.txt pip-tools==1.6.5

现在,只要您在

schul_cloud_resources_server_tests

文件夹中,您就可以运行以下命令。此外,您可以使用git创建带有您编辑的代码的pull-requests。

用法

本节描述了如何使用服务器和测试。

服务器

您可以在API定义中找到。服务器根据API进行服务。它验证输入和输出的正确性。

要启动服务器,请运行

python -m schul_cloud_resources_server_tests.app

服务器应出现在http://localhost:8080/v1

测试

您始终针对正在运行的服务器进行测试。 测试可能会删除您可以访问的所有内容。 如果您测试正在运行的服务器,请确保以不会破坏您希望保留的数据的方式进行身份验证。

python -m schul_cloud_resources_server_tests.tests --url=http://localhost:8080/v1/

http://localhost:8080/v1/是默认URL。

实施步骤

如果您想实施您的服务器,您可以遵循TDD步骤,一次实现一个测试。

python -m schul_cloud_resources_server_tests.tests -m step1
python -m schul_cloud_resources_server_tests.tests -m step2
python -m schul_cloud_resources_server_tests.tests -m step3
...
  • step1运行第一个测试

  • step2运行第一个和第二个测试

  • step3运行第一个、第二个和第三个测试

您可以使用以下命令运行单个测试

python -m schul_cloud_resources_server_tests.tests -m step3only

测试身份验证

测试服务器支持API密钥身份验证和基本身份验证。如果您通过互联网进行身份验证测试,请使用HTTPS来保护秘密。因此,对您的API的示例测试调用可能如下所示

python -m schul_cloud_resources_server_tests.tests  \
       --url=https://url.to/your/server               \
       --noauth=false --basic=username:password

如果您有一个API密钥,您可以测试服务器是否正常工作。

python -m schul_cloud_resources_server_tests.tests   \
       --url=http://url.to/your/server                \
       --noauth=false --apikey=apikey

默认情况下,测试服务器接受多种凭据进行身份验证

  • 无身份验证

  • 基本

    • 用户 valid1@schul-cloud.org 密码 123abc

    • 用户 valid2@schul-cloud.org 密码 supersecure

  • API密钥: abcdefghijklmn,用于用户 valid1@schul-cloud.org。客户端不会将用户名发送到服务器。

要测试这些,您可以在测试中多次添加--basic--apikey参数。默认情况下,--noauth=true参数。如果API只接受已认证的请求,则设置--noauth=false

python -m schul_cloud_resources_server_tests.tests    \
       --basic=valid1@schul-cloud.org:123abc           \
       --basic=valid2@schul-cloud.org:supersecure      \
       --apikey=valid1@schul-cloud.org:abcdefghijklmn  \
       --noauth=true

所有测试都使用不同的身份验证选项进行运行。如果我们有几种身份验证方式,测试将测试用户是否可以看到其他用户的数据。

假设,在密码、用户名和API密钥中添加invalid将使其无效。测试使用无效凭据来测试服务器在拒绝情况下的行为。

示例Travis配置

如果您想实施爬虫或服务器,您可以使用Travis-CI来测试它。示例travis配置可以在test-example分支中找到。您可以看到输出。配置是通用的。它将在您配置的任何其他语言下运行。

在爬虫中的使用

url-crawler使用测试服务器来测试同步。

在pytest中使用服务器

您可以在Python测试中使用该服务器。有可用的固定装置可以启动和停止服务器。

from schul_cloud_resources_server_tests.tests.fixtures import *

def test_pytest(resources_server):
    """pytest using the server"""

以下属性是可用的

  • resources_server.url 服务器的URL。

  • resources_server.api 连接到服务器的schul_cloud_resources_api_v1.ResourcesApi对象。

  • resources_server.get_resources() 返回服务器上资源列表的函数。

有关更多信息,请参阅模块schul_cloud_resources_server_tests.tests.fixtures。您可以添加对更多测试框架的支持。

Docker

您可以使用以下Docker命令构建此镜像:

docker build -t schulcloud/schul_cloud_resources_server_tests .

或者,您可以拉取Docker容器并运行它。

docker run schulcloud/schul_cloud_resources_server_tests

这将像上面的示例一样,在端口8080启动服务器。

Docker-Compose

存在一个docker-compose.yml文件,因此您可以使用docker-compose命令。服务器将在http://localhost:80/v1处可用。它使用60MB的内存限制。


您可以在GitHub上编辑此文档,并使用此编辑器进行检查。

项目详情


下载文件

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

源代码分发

schul_cloud_resources_server_tests-1.0.387.tar.gz (22.0 kB 查看哈希值)

上传时间: 源代码

构建分发

schul_cloud_resources_server_tests-1.0.387-py3-none-any.whl (25.9 kB 查看哈希值)

上传时间: Python 3

由以下机构支持