跳转到主要内容

七足机器人功能测试

项目描述

七足机器人自动化功能测试

这个源代码树既是编写涉及七足机器人的功能测试的库,也是七足机器人本身的标准功能测试集。

注意事项

  • 目前将作为库的使用完全没有文档。
  • pypi.org上的分发不包含七足机器人本身的功能测试。换句话说,它只包含库部分。
  • 这份README主要是关于七足机器人本身的功能测试的。

警告:要测试生产实例,请仅使用专用模式。其他模式假定您在测试运行后准备 丢弃所有数据,因此仅适用于对新生产实例进行预飞全测试。

安装

客户端安装

Mercurial

测试需要一个可工作的hg可执行文件,它可在$PATH上找到,并具有以下扩展:

测试工具(Selenium)

  • tox: pip install --user tox

  • ChromeDriver

    对于在运行测试的系统上直接安装

    • Fedora 29到33: dnf install chromedriver
    • Debian 9到10,Ubuntu < 20.04: apt install chromium-driver
    • Ubuntu ≥ 20.04:实际的chromium-driver包实际上安装了一个snap,这在某些环境中可能会导致问题。请参阅我们CI管道中的docker-inside作业。

    另一个选项是使用Selenium RemoteWebDriver,它通过专用系统代理实际的网页浏览。Selenium为此目的提供了selenium/standalone-chrome Docker镜像。

所有其他依赖项将由首次运行安装。

七足机器人服务器需求

这些测试可以针对以下提供的Heptapod服务器进行操作:

  • (默认)由运行测试的系统用户管理的本地Docker容器,或者
  • 从源代码安装并由与测试相同的用户运行,或者
  • 完全远程,跳过一些测试,或者
  • 生产环境,依赖于最多拥有专用项目组所有权的用户,并运行适合的测试子集。

除了生产服务器模式外,Gitlab根密码将由第一个运行的测试初始化。如果Gitlab根密码已设置且与预期不符,则测试将失败。

默认Docker设置

在Docker的情况下,默认的容器名称是heptapod

默认情况下,测试预期在Docker主机上运行,并且容器可以初始化到主机的TCP连接,该主机被识别为容器的IPv4网关。如果您有防火墙,请别忘了在防火墙中允许来自容器的传入TCP连接。您也可以通过--heptapod-reverse-call-host显式传递可到达的地址,或者通过传递空字符串作为地址来禁用此类测试。

默认情况下,容器HTTP和SSH端口必须转发到heptapod:81heptapod:2022。这通常通过将heptapod主机名解析为回环IP地址(如127.0.0.2)并像这样转发容器端口来完成

docker run --publish 127.0.0.2:2022:22 --publish 127.0.0.2:81:22

使用专用的主机名和IP地址有助于防止用户.ssh/known_hosts文件中的混淆。

运行测试

tox是启动测试的可执行文件。它还负责设置测试中使用的Python库。测试本身是用pytest编写的。

必须从这个存储库的根目录运行所有的tox命令。

可以将选项传递给底层的pytest命令

    tox -- --heptapod-url URL -k push_basic

所有Heptapod特定选项都采用--heptapod-some-option的形式。要获取完整的列表,请

   tox -- --help

常见网络选项

这些在所有情况下都是可用的

  • --heptapod-url(默认http://heptapod:81):测试的Heptapod实例的HTTP URL。它必须使用可解析的名称,而不是IP地址。它不必通过DNS解析,指向回环接口的/etc/host条目就可以。
  • --heptapod-ssh-port(默认2022):测试的Heptapod实例的SSH端口。将使用与HTTP相同的同一个主机名。如果主机名解析为回环接口,建议将其绑定到专用地址,例如127.0.0.2,以最大限度地减少与您的SSH known_hosts文件相关的风险。
  • --heptapod-reverse-call-host:Heptapod服务器可以用来到达运行这些测试的系统上的地址(对于测试出站连接,如web钩子)。
  • --heptapod-root-password(默认5iveL!fe)。要使用和可能为root用户设置的密码。默认值与GitLab开发套件(GDK)相同。

并行运行测试

仅使用---tests-per-worker选项。

请不要使用--workers选项:它会多次设置Heptapod会话固定装置,导致与GitLab用户令牌和其他会话局部共享数据的问题。

测试Docker容器

这是默认的,也是最简单的。如果您遵循了默认的命名规则,并且当前系统用户可以管理Docker容器,那么只需运行tox就可以启动整个测试套件

特定选项

  • --heptapod-container-name(默认heptapod

测试本地源代码安装。

您需要在同一用户下运行测试和Heptapod服务器,并传递一些必选选项。

最小示例

~/heptapod/heptapod-tests $ tox -- --heptapod-source-install\
    --heptapod--repositories-root ~/heptapod/gdk/repositories-root

测试远程服务器

重要提醒:如果您没有准备好放弃所有数据,请勿在任何Heptapod服务器上运行这些测试。

您必须提供--heptapod-remote选项,并且可能需要明确所有网络选项。

~/heptapod/heptapod-tests $ tox -- --heptapod-remote \
  --heptapod-ssh-port 22 \
  --heptapod-url https://heptapod.test \
  --heptapod-root-password SECRET

列出根密码选项是因为您可能不希望互联网上有默认根密码的实例。

测试生产实例

2021-02-18新增:参见!80

要运行适合生产实例的测试,您首先需要准备

  • 一个完全致力于这些功能测试的项目组
  • 一个拥有该专用组(将来可能还需要更多用户)的专用用户。

通过显式的命令行选项激活生产模式。另一个选项用于传递专用用户凭据。

示例

~/heptapod/heptapod-tests $ tox -- --heptapod-prod-server \
    --heptapod-prod-group-owner-credentials ID:USERNAME:EMAIL:PASSWORD \
    --heptapod-url https://foss.heptapod.net \
    --heptapod-ssh-port 22 \
    --heptapod-ssh-user hg

其中ID是数字用户ID,USERNAME是用户登录名(例如testfonct)。

要在与Clever Cloud SSO关联的实例上启动测试,请另外使用--heptapod-clever-cloud-sso选项。

备注和安全

  • 用户密码必须完全可用:功能测试不会处理首次登录时发生的最终化序列。
  • 不要给专用用户任何专用组以外的权限。
  • 建议在不使用时锁定专用用户。
  • 准备好接收针对专用用户地址的合并请求电子邮件。这可以说是测试的一部分。

Docker:选择要测试的版本

您使用的Docker镜像中安装的版本由heptapod_revisions.json文件指定。

要测试您的本地heptapod/heptapod克隆

  • 在容器中挂载您的本地heptapod克隆(假设在容器中它被视为/home/heptapod-rails

  • 在容器中执行以下操作

    cd /var/opt/gitlab/embedded/service/gitlab-rails
    hg pull --config phases.publish=False /home/heptapod-rails
    hg up -r WISHED_REVISION
    gitlab-ctl restart unicorn
    

如果您想尝试更改其他组件(例如,hg-git),则可以进行类似操作。路径可以在Docker构建日志中看到,或者您可以在安装脚本中读取

添加新测试

分支和主题规则

惯例是默认分支中的测试应通过当前octobus/heptapod:latest Docker镜像,因此

  • 如果您想分享一个错误复现,请创建一个新的主题
  • 即使heptapod中已落地错误修复,也请等待Docker推送后再发布相应的测试
  • 测试可以在Heptapod新版本发布之前发布,但请先让相应的修复落地并推送到Docker Hub。

如果有活动的稳定分支(例如,heptapod-0-6-stable或类似),则该分支的测试必须针对相应分支的最新发布版本通过。相同的结论适用。

项目详情


下载文件

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

源分布

heptapod-tests-0.9.0.tar.gz (56.4 kB 查看哈希)

上传时间:

支持者

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