Schul-Cloud 内容API
项目描述
此存储库是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的内存限制。
项目详情
schul_cloud_resources_server_tests-1.0.387.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 94940d9fc319423a626c0c98b438e0295434d6d78da93cc7206f66773b13f6d0 |
|
MD5 | 68db049445cfe6f443ffe25588fb2494 |
|
BLAKE2b-256 | 19672ff68d87369e11ea1f1e10de8c224ffa7c68ee36ca22db1f058a71aec903 |
schul_cloud_resources_server_tests-1.0.387-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 7735beb993628410d2395c372fd99459d8d68bd51a0998f4faa26b3f312aba8c |
|
MD5 | 20f4f69f295d288f56b4222a98dba8d4 |
|
BLAKE2b-256 | 58d83a62408a2c0abc821e83185ea03685913c4251c071a5969bcfd83199254e |