跳转到主要内容

运行Robot Framework任务的Web服务

项目描述

PyPi license PyPI pyversions PyPI download month

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

用法

有两种类型的端点

  1. 执行
  2. 报告

执行

触发执行机器人任务/测试的端点,例如

调用机器人任务/测试

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.htmlreport.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” 可以通过参数 AnotherTaskanother_task 在 URL 中触发。

项目详情


下载文件

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

源分发

robotframework_webservice-1.0.0.tar.gz (14.8 kB 查看哈希)

上传时间

构建分发

robotframework_webservice-1.0.0-py3-none-any.whl (14.8 kB 查看哈希)

上传时间 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面