spryker/robotframework-suite-tests

Robot Framework 的自动化测试

安装数: 36 018

依赖项: 9

建议者: 0

安全性: 0

星标: 10

关注者: 16

分支: 6

开放问题: 0

语言:RobotFramework


README

此存储库包含基于 Robot Framework 的 API 和 UI 测试集合。API 测试使用 Robot Framework 与 RequestsLibrary 结合使用,而 UI 测试则依赖于由 Playwright 提供的 Browser library。

安装

先决条件

Robot Framework 使用 Python 实现,安装它的先决条件是已安装 Python 或其替代实现 PyPy。另一个推荐的先决条件是拥有可用的 pip 软件包管理器。Robot Framework 需要 Python 3.6 或更高版本。

  1. 安装 Robot Framework
python3 -m pip install -U robotframework
  1. 安装 RequestsLibrary
python3 -m pip install -U robotframework-requests
  1. 安装 DatabaseLibrary
python3 -m pip install -U robotframework-databaselibrary
  1. 根据您的配置安装 Python SQL 库
    • 引擎: MySQL
     python3 -m pip install PyMySQL
    • 引擎: PostgreSQL
    python3 -m pip install psycopg2-binary

UI 测试的安装

对于 UI 测试的安装,需要 Robot Framework、RequestsLibraryDatabaseLibrary 和由 Playwright 提供的 Browser library

如果您已安装了所有先决条件,那么您需要安装的是 Node.js 和 Browser library。

  1. 安装 Node.js®
  2. 安装 Browser library
python3 -m pip install -U robotframework-browser
  1. 初始化 Browser library
rfbrowser init

API 测试的安装

对于 API 测试的安装,需要 Robot Framework、RequestsLibraryJSONLibraryDatabaseLibrary

如果您已安装了所有先决条件,那么您需要安装的是 JSONLibrary。

  1. 安装 JSONLibrary
python3 -m pip install -U robotframework-jsonlibrary

自动化安装

您也可以通过执行 shell 脚本 install.sh 一次性运行所有安装步骤。

如何运行测试

Robot Framework 测试用例通过命令行执行,默认的输出结果是一个 XML 格式的输出文件和一个 HTML 报告和日志。执行完成后,可以使用 Rebot 工具将输出文件合并并进行其他后处理。

注意:如果您希望使用本地环境的默认配置运行测试,您可以浏览到 Helper 部分

概要

robot [options] data
python -m robot [options] data
python path/to/robot/ [options] data

通常使用安装过程中创建的robot命令来启动执行。或者,可以使用选定的Python解释器执行已安装的robot模块。如果Robot Framework安装在不同的Python版本下,这将特别方便。最后,如果您知道已安装的robot目录的位置,也可以使用Python执行。

无论执行方式如何,要执行的测试数据的路径(或路径)都作为命令后的参数给出。此外,可以使用不同的命令行选项以多种方式更改测试执行或生成的输出。

基本用法示例: robot -v env:{ENVIRONMENT} {PATH}

支持的CLI参数

CLI示例

  • 通过docker/sdk执行api/suite文件夹中的所有测试(正负测试,所有存在的glue、bapi和sapi API测试)。
    docker/sdk exec robot-framework robot -v docker:True -v env:api_suite -d results -s '*'.tests.api.suite .
  • 执行api/b2b文件夹中的所有测试(所有存在的glue、bapi和sapi API测试)。
    robot -v env:api_b2b -d results -s '*'.tests.api.b2b .
  • 执行特定文件夹中的所有测试(文件夹及其子文件夹中存在的所有API测试)。
    robot -v env:api_b2b -d results -s '*'.tests.api.b2b.glue.access_token_endpoints .
  • 仅执行api文件夹中的正面测试(所有文件夹中存在的正面API测试)。
    robot -v env:api_suite -d results -s positive .
  • 执行tests/api/suite/glue/abstract_product_endpoints文件夹中所有正面和负面API测试。子文件夹(其他端点)也将执行。
    robot -v env:api_suite -d results -s '*'.tests.api.suite.glue.abstract_product_endpoints .
  • 执行tests/api/suite/glue/abstract_product_endpoints/abstract_products文件夹中所有正面和负面API测试。
    robot -v env:api_suite -d results -s '*'.tests.api.suite.glue.abstract_product_endpoints.abstract_products .
  • 在特定的云环境中执行MP-B2B的所有E2E UI测试。
    robot -v env:ui_mp_b2b -v yves_env:http://yves.example.com -v zed_env:http://zed.example.com -v mp_env:http://mp.example.com -d results tests/ui/e2e/mp_b2b.robot
  • 在特定云环境中,使用自定义DB配置执行B2B的所有API测试。
    robot -v env:api_b2b -v db_engine:postgresql -v db_host:124.1.2.3 -v db_port:5336 -v db_user:fake_user -v db_password:fake_password -v db_name:fake_name -s '*'.tests.api.b2b.glue .

UI测试中支持的浏览器

由于Playwright自带所有浏览器的内置二进制包,因此不需要额外的驱动程序,例如geckodriver。

这些覆盖了全球超过85%使用的浏览器的浏览器可以在Windows、Linux和MacOS上测试。不再需要专用机器。

助手

对于本地测试,所有测试通常都是针对默认主机执行的。为了避免执行命令中的错误,可以使用Makefile助手快速启动运行。 注意:在macOS和Linux系统上不需要安装。大多数Linux发行版默认包含make命令。要在Windows上运行Makefile,您需要安装一个名为“make”的程序。

支持的助手命令
助手示例
  • 在本地环境中运行B2B的所有API测试
    make test_api_b2b
  • 在禁用docker/sdk命令的本地环境中运行MP-B2C的所有UI测试
    make test_ui_mp_b2c ignore_console=true
  • 在启用docker/sdk命令的本地环境中运行MP-B2C的所有UI测试,并指定您的应用程序位置
    make test_ui_mp_b2c ignore_console=false project_location=/Users/your_user/projects/mp-b2b
  • 在云环境中运行B2B的所有API测试
    make test_api_b2c glue_env=http://glue.example.com bapi_env=http://bapi.example.com sapi_env=http://sapi.example.com

内置库

根据您的需求可以安装的外部库

完整列表可以在官方网站上找到

自动重新执行失败的测试

通常需要在系统测试或测试本身修复错误后重新执行测试子集。这可以通过按名称(--test和--suite选项)选择测试用例、按标签(--include和--exclude)或按先前状态(--rerunfailed或--rerunfailedsuites)进行选择来实现。

使用默认的合并输出方法将重执行结果与原始结果合并并不太好。主要问题是你会得到独立的测试套件,并且可能已经修复的失败也会显示出来。在这种情况下,最好使用 --merge (-R) 选项来告诉 Rebot 合并结果。在实践中,这意味着后者测试运行中的测试将替换原始结果中的测试。

合并测试的消息包含一个备注,说明结果已被替换。该消息还会显示测试的旧状态和消息。

合并的结果必须始终具有相同的顶级测试套件。合并输出中找不到的原始输出中的测试和套件将添加到结果输出中。

查看和生成关键字文档

测试中使用的关键字应该有文档记录。如果你向“common”文件夹内的文件中添加任何新的关键字,它们应该包含[Documentation]标签,该标签描述关键字的功能、参数含义并提供使用示例。

可以通过这些标签生成文档。目前,只有common_api.robot生成了文档。如果你添加了新关键字,你应该重新生成文档,并将其与所做的其他更改一起提交。

要为api、bapi和sapi测试生成文档,使用以下命令:libdoc resources/common/common_api.robot API_Keyword_Documentation.html

要查看文档,只需在任何浏览器中打开生成的html文件。

输出文件

在执行测试时创建几个输出文件,并且它们都与测试结果有关。

日志文件以HTML格式包含有关已执行测试用例的详细信息。它们具有层次结构,显示测试套件、测试用例和关键字详情。日志文件在需要详细调查测试结果时几乎总是需要的。尽管日志文件也有统计信息,但报告更适合获取更高级的概述。

命令行选项 --log (-l) 确定日志文件的创建位置。除非使用特殊值NONE,否则日志文件始终会创建,其默认名称为log.html。