机器人框架服务

rf-service的Python项目详细描述


射频业务

RobotFramework是一个为kubernetes集群运行测试/健康检查的服务。它可以在两种模式下工作:使用frontend按需执行和Kubernetes CronJob,它按给定的时间表执行测试并将其发布到Caddy服务器。在

快速入门

git clone https://github.com/devopsspiral/rf-service.git
cd rf-service
helm install rf-service ~/git/rf-service/chart/rf-service/

#By default rf-service-fe is exposed on http://rf-service.local
#If you running it on k3d/k3s you might need to add entries to you /etc/hosts

要运行测试,您需要首先转到“配置”选项卡,并定义fetcher(用于获取测试源)和publisher(定义放置结果的位置)。您可以使用内部caddy容器作为发布者目标,只需使用rf-service configuration中描述的配置文件中的值。在

如果使用默认设置作为CronJob执行,每分钟都应该有测试执行,结果将在results选项卡中发布。 执行的测试从KubeLibrary获取,并且 可能在集群上失败。如果您想看到它们通过,您需要k3s/k3d和示例grafana服务,如KubeLibrary README所述。在

使用

0.3.0变化

Helm chart尚不支持这些更改。

Testing with octopus。在

CLI改进

由于0.3.0 rf服务可以使用CLI参数以以下形式配置:

^{pr2}$

相当于:

{
    "fetcher": {
        "type": "LocalFetcher",
        "src": "~/test/source"
    },
    "publisher": {
        "type": "LocalPublisher",
        "dest": "~/test/results"
    }
}

另外,CLI支持以下标志:

CLI parameterComment
-i/--includeinclude test tags
-e/--excludeexclude test tags

依赖关系解析

为了使rf服务足够通用,可以作为不同类型测试用例的基础执行,增加了对pip需求的支持。如果fetcher收集包含^{em1}的目录,则使用这种方法$要求.txt文件,它将安装与pip install -r requirements.txt相同的包。记得第一次发现吗要求.txt文件将被使用,所以最好在顶层目录中保存一个。在

构建自己的测试图像

rf服务映像应该只包含与运行RobotFramework测试相关的逻辑,要包含外部测试库,您应该构建自己的映像,类似于docker-k8s/Dockerfile中的dockerfile:

FROM mwcislo/rf-service

COPY docker-k8s/requirements.txt .

RUN pip install -r requirements.txt

CMD rf-service

默认情况下,头盔图表使用此图像来运行测试

射频业务配置

如果将rf服务用作CronJob,则需要.json文件来配置其行为。它作为唯一的参数传递给rf服务可执行文件(请参见this line

文件内容示例如下:

  {
    "fetcher": {
        "type": "ZipFetcher",
        "url": "https://github.com/devopsspiral/KubeLibrary/archive/incluster.zip"
    },
    "publisher": {
        "type": "CaddyPublisher",
        "url": "http://rf-service:8090/uploads"
    }
  }

它配置rf服务从给定的url(github中的分支)获取测试用例,并使用k8s服务dnrf服务(在执行helm安装时提供名为release-rf服务)在Caddy服务器上发布结果。您可以创建自己的获取器和发布器。在

在helmchart中,可以使用定义配置文件内容。值.config并在集群上作为ConfigMap保存。在

使用Web UI时(。值.config为空字符串)可以在“配置”选项卡中执行相同的配置。您需要分别保存Publisher和Fetcher配置。要使用内部Caddy容器,您需要传递http:///Caddy/uploads,即http://rf-service.local/caddy/uploads

舵图

下面的表格包含最重要的参数。在

^{tb2}$

发展

# clone repo
git clone https://github.com/devopsspiral/rf-service.git
cd rf-service

# create virtualenv
virtualenv .venv
. .venv/bin/activate
pip install --user -r requirements.txt
export PYTHONPATH=./src:${PYTHONPATH}
cd src
python -m rf_runner.api
# or
scripts/rf-service [config.json]
# or from docker
docker run -it --rm -p 5000:5000 mwcislo/rf-service:0.x.0
# API is on http://localhost:5000/api/


# testing
python -m unittest

参考文献

文章

Robot Framework library for testing Kubernetes

Testing on kubernetes - rf-service

Intro to Vue.js. Testing on kubernetes - rf-service frontend.

Testing with octopus

存储库

KubeLibrary

rf-service-fe

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
在ElasticSearch中将SearchHit转换为Java对象   第三方库类的java重写XmlAdapter   java如何使用动画类获得平滑的动画效果?   Java PDFBox如果文本内容超过PDF的第一页,如何添加新页面?   Java二叉搜索树u根到最近叶的距离   java什么是diff Scanner和BufferedReader   java如何设计不生成并行数组的程序   java多次声明变量会降低执行速度吗?   java如何使用JXLAPI读取下拉列表的值   多线程为什么自定义阻塞队列在Java中不是线程安全的   java在一个变量中每输入1000个单位,就从另一个变量中减去1?   java Mapstruct通用映射器   Java中的类能否确定它是否已被修改?   java如何在MogoOperations聚合函数中定义输出类型?