运行Robot Framework任务的Web服务
项目描述
Robot Task Webservice
管理Robot Framework任务/测试的Web服务。
目标
此Web服务应启动Robot Framework任务/测试并返回和缓存相应的报告。
安装和执行
Docker
您可以通过挂载测试用例到Web服务中运行镜像
docker run --rm --publish 5003:5003 \
--volume <host directory of test cases>:/robot/tests \
--env SUITE_FOLDER=tests \
ghcr.io/marketsquare/robotframework-webservice:master
您也可以通过挂载测试用例和变量文件(用空格分隔)到Web服务中运行镜像
docker run --rm --publish 5003:5003 \
--volume <host directory of test cases>:/robot/tests \
--volume <host directory of variable files>:/robot/variables \
--env SUITE_FOLDER=tests \
--env "VARIABLE_FILES=variables/variables.py variables/variables2.py" \
ghcr.io/marketsquare/robotframework-webservice:master
Podman
几乎与Docker相同,但可能需要将Web服务附加到主机网络
podman run --network host -v ./examples:/robot/tasks --env SUITE_FOLDER=tasks rf-webservice:latest
本地
pip install robotframework-webservice
并在命令行中执行
python -m RobotFrameworkService.main -p 5003 -t path_to_my_taskfolder
用法
有两种类型的端点
- 执行
- 报告
执行
触发执行机器人任务/测试的端点,例如
调用机器人任务/测试
http://localhost:5003/robotframework/run/mytask
使用变量调用机器人任务/测试
http://localhost:5003/robotframework/run/mytask?myVariable1=42&anotherVariable=Mustermann
响应包含一个头字段 x-request-id
,可用于异步检索此执行的日志和报告(请参阅报告端点)
有同步和异步请求的端点
# connection remains open for duration of my task/test
http://localhost:5003/robotframework/run/mytask
# connection closes immediately - result must be requested with the x-request-id
http://localhost:5003/robotframework/run/mytask/async
还有一个全能端点 POST http://localhost:5003/robotframework/run
,可触发执行机器人文件、测试、任务或套件。
可以通过JSON有效负载中的选项进行自定义。所有可用选项均在Swagger架构和示例中记录。
响应包含一个头字段 x-request-id
,可用于检索日志和报告。
默认情况下,执行是异步的,但可以通过 sync 选项进行更改。
对执行的Robot进程没有限制!很容易在DOS中通过一次推送太多的请求来推动Web服务
调用机器人测试
curl -X 'POST' \
'http://localhost:5003/robotframework/run' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"paths": [
"examples"
],
"test": "Demonstration Test"
}'
调用机器人任务
curl -X 'POST' \
'http://localhost:5003/robotframework/run' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"paths": [
"examples"
],
"task": "Demonstration Task"
}'
使用变量调用机器人任务
curl -X 'POST' \
'http://localhost:5003/robotframework/run' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"paths": [
"examples"
],
"task": "Task with more variables",
"variables": {
"firstname": "Max",
"lastname": "Mustermann"
}
}'
报告
提供特定任务执行 log.html
和 report.html
端点的端点。您需要从触发执行的前一个响应中获取 x-request-id
。
启动 Web 服务
Web 服务在 uvicorn 内自动启动。只需调用
python -m RobotFrameworkService.main
您可以使用以下命令检查可用选项
python -m RobotFrameworkService.main --help
示例
python -m RobotFrameworkService.main -p 5003 -t path_to_my_taskfolder
示例 - 变量文件
您可以在执行时提供传递给所有机器人套件的自定义变量文件
python -m RobotFrameworkService.main -p 5003 -t path_to_my_taskfolder --variablefiles config/env/test.py
自定义 WSGI 服务器
您可以使用裸 WSGI 服务器启动 RobotFrameworkService
uvicorn RobotFrameworkService.main:app --port 5003
或者使用其他 WSGI 服务器启动 Web 服务,例如 waitress
waitress-serve --port 5003 RotbotFrameworkService.main:app
SwaggerUi
Swagger-UI 在 http://localhost:5003/docs
下可用
演示任务
此项目包含一些演示任务、测试和变量。它们位于 examples
文件夹中。如果您喜欢,可以在该目录中添加自己的任务/测试套件。
URL 中的任务名称包含空格
任务可以包含空格,URL 必须不能。幸运的是,Robot Framework 支持驼峰式以及蛇形_case 语法。这意味着:“Another Task” 可以通过参数 AnotherTask
或 another_task
在 URL 中触发。
项目详情
下载文件
为您的平台下载文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源分发
构建分发
robotframework_webservice-1.0.0.tar.gz 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 080d1b24f5aa9b9827dffc576d3d4f1520fd8c7112f0afbe402f2e76eac8a8a8 |
|
MD5 | 3ce8ed8087eea8ddfaaa8556cd81840f |
|
BLAKE2b-256 | 48866279aed323294143d3408c34800575c86d6d4784475bbdc3238698697873 |
robotframework_webservice-1.0.0-py3-none-any.whl 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1b6f7796f761fa07aeb3ca36a34c219131578f013dfae59aa9fc1c7e6f44341c |
|
MD5 | 9b332ef5bfe224e74a4123a6c451460c |
|
BLAKE2b-256 | c97139d3478986dce6464f2704dc0158a0ebb858d0a354b4e18f709e0f884247 |