舒尔云含量
schul-cloud-ressources-server-tests的Python项目详细描述
此存储库包含
- 用于测试刮板的服务器
- 测试服务器
这个包在Python 2和3下工作
安装
使用pip,您可以安装如下所有依赖项:
pip install schul_cloud_ressources_server_tests
完成后,可以导入包。
importschul_cloud_ressources_server_tests
用法
本节介绍如何使用服务器和测试。
服务器
您可以找到API定义。 服务器根据API服务。 它验证输入和输出的正确性。
要启动服务器,请运行
python -m schul_cloud_ressources_server_tests.app
服务器应该出现在http://localhost:8080/v1。
测试
您总是根据正在运行的服务器进行测试。 tests可以在您可以到达的任何时间删除。 如果测试正在运行的服务器,请确保以不破坏要保留的数据的方式进行身份验证。
python -m schul_cloud_ressources_server_tests.tests --url=http://localhost:8080/v1/
http://localhost:8080/v1/是默认的url。
实施步骤
如果要实现服务器,可以按照tdd步骤来实现 一个接一个的测试。
python -m schul_cloud_ressources_server_tests.tests -m step1 python -m schul_cloud_ressources_server_tests.tests -m step2 python -m schul_cloud_ressources_server_tests.tests -m step3 ...
- 步骤1运行第一个测试
- 步骤2运行第一个和第二个测试
- 第3步运行第一、第二和第三个测试
- …
您可以使用
python -m schul_cloud_ressources_server_tests.tests -m step3only
测试认证
测试服务器支持api密钥认证和基本认证。 如果您通过Internet测试身份验证。 使用https保护机密。 因此,对api的示例测试调用可能如下所示:
python-mschul_cloud_ressources_server_tests.tests \ --url=https://url.to/your/server \ --noauth=false--basic=username:password
如果你有一个api密钥,你可以测试服务器是否工作。
python-mschul_cloud_ressources_server_tests.tests \ --url=http://url.to/your/server \ --noauth=false--apikey=apikey
默认情况下,测试服务器接受具有多个凭据的身份验证
- 无身份验证
- 基本:
- 用户valid1@schul-cloud.org密码123abc
- 用户valid2@schul-cloud.org密码supersecure
- api密钥:用户valid1@schul-cloud.org的abcdefghijklmn。 客户端不会将用户名发送到服务器。
要测试这些,可以添加--basic和--apikey 参数多次测试。 --noauth=true参数是默认值。 如果api只接受经过身份验证的请求,请设置--noauth=false
python-mschul_cloud_ressources_server_tests.tests \ --basic=valid1@schul-cloud.org:123abc \ --basic=valid2@schul-cloud.org:supersecure \ --apikey=valid1@schul-cloud.org:abcdefghijklmn \ --noauth=true
所有测试都使用不同的身份验证选项运行。 如果我们有几种方法进行身份验证,则测试用户是否看到其他用户的数据。
假设在密码中添加invalid, 用户名和api密钥将使其无效。 测试使用无效凭据在拒绝的情况下测试服务器行为。
Travis配置示例
如果要实现爬网程序或服务器,可以使用travis ci来测试 它。 travis配置示例可以在test-example分支中找到。 您可以查看output 配置是通用的。 它将在您配置的任何其他语言下运行。
在pytest中使用服务器
您可以在python测试中使用服务器。 有一些设备可以启动和停止服务器。
fromschul_cloud_ressources_server_tests.tests.fixturesimport*deftest_pytest(ressources_server):"""pytest using the server"""
以下属性可用:
- ressources_server.url服务器的url
- ressources_server.apiaschul_cloud_ressources_api_v1.RessourcesApiobject连接到服务器。
- ressources_server.get_ressources()返回服务器上资源列表的函数。
有关更多信息,请参见模块schul_cloud_ressources_server_tests.tests.fixtures。 您可以添加对更多测试框架的支持
待办事项
- 为服务器生成Docker容器
- 为测试生成Docker容器
- 记录如何在
- 中嵌入测试和服务器
- 爬虫
- travis构建任意语言脚本
- 创建带有测试的示例爬虫程序