BELLATRIX C# 和 JAVA 测试自动化框架
在过去的十年中,围绕 Selenium 涌现了大量的开源项目生态系统。Selenium 通常用于自动化 Web 应用程序以进行测试,但不包括测试框架。如今,Selenium 生态系统计划试图推广由核心 Selenium 维护者之外的人员维护的流行的开源测试自动化框架。其中一个框架是 BELLATRIX,由Anton Angelov发明。它有两个版本 - C# 和 Java。测试框架是一种抽象,其中通用代码为测试应用程序的不同方面(UI、API、安全性、性能等)提供通用功能(可以有选择地覆盖)。
BELLATRIX 测试自动化框架
BELLATRIX 的第一个版本出现在 2017 年 12 月 26 日。它最初仅适用于 C#,但使用当时的新 .NET Core 编写,允许该框架在所有主要操作系统上使用(跨平台)。BELLATRIX 的一个巨大优势是其跨技术就绪性。它允许您为不同的技术(如 Web、移动、桌面和 API)编写测试。在 BELLATRIX 中,我们力求所有模块的 API 尽可能相同。
用法很简单。我们建议将 BELLATRIX 克隆为 GIT 子模块。然后,任何自定义、测试和特定于项目的插件都应放置在 BELLATRIX 克隆存储库之外的项目中。这样,您可以快速更新到最新版本。
让我们来研究一下在 15 分钟内使用 BELLATRIX 创建您的第一个测试有多么容易。该示例将展示如何创建一个非常基本的测试,登录到一个网站

- 打开 BellatrixTestFramework.sln

- 在 starthere 文件夹下,找到您喜欢的项目:web、mobile、desktop、API

- 打开 BellatrixLoginTest.cs 文件。在那里您会找到一个自动化登录的示例测试。
[TestClass]
public class LoginTestsMSTest : MSTest.WebTest
{
public override void TestInit()
{
App.Navigation.Navigate("http://demos.bellatrix.solutions/my-account/");
}
[TestMethod]
public void SuccessfullyLoginToMyAccount()
{
var userNameField = App.Components.CreateById<TextField>("username");
var passwordField = App.Components.CreateById<Password>("password");
var loginButton = App.Components.CreateByXpath<Button>("//button[@name='login']");
userNameField.SetText("info@yourverybusywebsite.com");
passwordField.SetPassword("yourverysecretp4ssw0rd$");
loginButton.Click();
var myAccountContentDiv = App.Components.CreateByClass<Div>("woocommerce-MyAccount-content");
myAccountContentDiv.ValidateInnerTextContains("Hello John");
var logoutLink = App.Components.CreateByInnerTextContaining<Anchor>("Log out");
logoutLink.ValidateIsVisible();
logoutLink.Click();
}
}
所有可用的服务都可以通过主 App 类获得。Components 属性提供了各种 Create 方法来查找元素。它们是通用的,因此您需要提及搜索元素的类型。我们有不同的元素,因为对于每个元素,BELLATRIX 在本机 WebDriver 方法之上提供了各种附加方法和断言。示例代码使用 MSTest 作为默认测试框架,但通过更改属性,它也可以直接用于 NUnit。当然,您也需要更改基类的命名空间。
为什么选择 BELLATRIX?
让我们快速列出该框架带来的一些重要内容
多测试环境配置
该框架的每个方面都可以通过丰富的 JSON 配置进行控制,该配置旨在适用于多种测试环境。Web 项目配置。
自定义
开发中最困难的事情之一是允许这些通用框架具有可扩展性和可定制性。 了解到定制的重要性,我们采用了不同的方法来实现它。 主要方法是关于编写自己的插件。
测试可靠性
测试自动化中最大的问题之一是处理超时以及对当前可能不在页面上的元素执行操作。 BELLATRIX 隐藏了搜索和等待元素的复杂性。 此外,当您对元素执行操作或断言时,我们保证一旦返回,它将存在。
测试的重要组成部分是断言 - 检查是否满足某些条件。 为了处理这种情况,我们创建了元素的Validate方法。 它们在内部处理等待某些条件发生的整个复杂过程。
updateCart.ValidateIsDisabled();
totalSpan.ValidateInnerTextIs("120.00€", timeout: 30, sleepInterval: 2);
messageAlert.ValidateIsNotVisible();
复杂控件
BELLATRIX 提供了 API,可以更轻松地处理 HTML 表格和网格HTML 表格和网格。

TestGrid.ForEachCell(cell => cell.AssertFontSize("14px"));
TestGrid.GetCell("Firstname", 1).ValidateInnerTextIs("Mary");
TestGrid.GetCell(0, 1).ValidateInnerTextIs("John");
TestGrid.GetCell<Employee>(cell => cell.PersonalEmail, 1).ValidateInnerTextIs("mary@hotmail.com");
您可以使用这两个组件执行更多复杂的操作,因此请查看官方文档。
集成
将框架与您现有的工具和流程无缝集成。 在云端执行测试,在报告解决方案中分发和发布测试结果。 也许该框架最重要的差异化因素是它与流行的工具(如 Jira/qTest/Allure/ReportPortal)和云(如 AWS、Microsoft Azure 等)的许多集成。 所有这些集成都利用了 BELLATRIX 的插件架构。 例如,我们有插件可以根据我们在 qTest 和 AzureDevops 中的自动化测试自动生成/更新测试用例,或者类似地在 Jira 或 Azure 中创建带有重现步骤的自动错误报告。
动态测试用例
动态测试用例是 BELLATRIX 的一个独特功能,该框架会根据您的自动化测试在流行的测试用例管理系统中自动生成测试用例。 它会自动填充标题、描述和其他必要的属性。 此外,它将生成人类可读的步骤和预期结果。 最显著的好处是,无论您在测试中更改什么,它都会随着时间的推移与您自动生成的测试用例保持同步。 这是一项出色的功能,可以让您公司中非技术人员了解您的测试在做什么。
PDF 和图像的 AI 验证
Azure 计算机视觉是一项服务,可用于从具有混合语言和书写风格的图像和文档中提取打印和手写文本。 相比之下,Azure 表单识别器是一项 AI 驱动的文档提取服务,可以理解您的文档。 您不仅限于 PDF。 您可以使用相同的功能从复杂图像中提取文本。 BELLATRIX 带有基于 AWS 云的类似功能。
电子邮件测试
BELLATRIX 为电子邮件测试提供了一些实用程序。 有一些场景我们需要这样的集成。 第一个与创建唯一的电子邮件收件箱并使用它们提交各种在线表单有关。 稍后,我们可以通过服务读取电子邮件并检查电子邮件的内容。 通过常规 C# 验证内容可能就足够了,或者在某些情况下,我们可能需要在浏览器中与电子邮件内容进行交互。
我们在许多大型企业项目中每天都使用许多其他集成,例如用于安全存储凭据和其他机密的云机密管理。 所有 BELLATRIX 集成
即使您具备所需的编程知识,在您的项目中使用 BELLATRIX 也可能节省数月/数年的工作量。 这样,您可以快速专注于为您的项目编写自动化测试。 通常,每年有 4-6 个主要版本,包括所有错误修复和新功能。 查看我们的发行说明历史。 该框架完全覆盖了 4000 多个自动化测试,并提供了丰富的文档。 我们确保仅在确定一切正常时才合并新的功能分支。 如果在主要版本之后出现一些问题,会在几天内快速修复。
对于功能请求或错误报告,您可以将它们提交到我们的 GitHub 存储库。 如果您认为您开发的功能可以添加到 CORE 框架中,或者您有错误修复,请提交 PR,以便我们可以讨论并可能合并它。 对于其他任何事情,您可以通过我们的联系我们表格与我们联系。