当前位置: 首页 > 质量专栏 > 使用Jasmine框架和Selenium进行自动跨浏览器测试
使用Jasmine框架和Selenium进行自动跨浏览器测试
2021-08-17 浏览次数1897

在当今快节奏的软件开发世界中,我们经常会发现用于开发的新技术和新语言,随之而来的是相关市场中的测试自动化工具和框架。选择正确的工具和框架集十分必要,因为它们会影响代码的准确性和软件的TTM(上市时间)。

JavaScript是被广泛用于Web自动化测试的编程语言之一,它支持许多用于Web UI测试的Selenium自动化测试框架。在所有可用的测试框架中,Jasmine JavaScript测试框架被证明是最合适的,因为它提供了稳定且功能强大的架构,Jasmine很容易上手,也很容易实现测试场景。

在使用Jasmine进行Selenium自动化测试的本教程中,我们从自动化测试的角度研究了Jasmine JavaScript测试框架的本质。我们还将学习如何设置它,然后是示例代码的编写和执行。

一、Jasmine简介

Jasmine是一个开源的JavaScript测试框架。它是一个行为驱动(BDD)的、受开发启发的框架,独立于任何其他框架。它用于同步和异步JavaScript测试场景中的单元测试。除了对JS的有力支持外,它还为Python、Ruby和其他基于JavaScript的语言提供了广泛的支持。此外,它可用于不同的版本,如standalone、node.js等。使用Jasmine的另一个好处是它是一个独立的框架,对语言、浏览器和平台的依赖最小(甚至没有)。

Jasmine JavaScript测试框架不需要DOM,并且非常容易设置。此外,它提供了一个完美且易于阅读的语法,如下例所示:

二、为什么使用Jasmine作为JavaScript测试的测试框架?

了解了Jasmine的概述之后,让我们看看使用JavaScript Selenium自动化测试进行Web UI测试的主要特性(或优势):

  • 易于设置且易于编写测试;

  •  运行速度非常快,并且对Jasmine核心没有外部依赖;

  •  它带有开箱即用的支持,可满足所有测试需求;

  •  可以使用相同的框架运行浏览器和node.js测试;

  •  具有一个广泛而活跃的社区与定期更新的支持和开发文档;

  • 支持在框架中使用监测实现测试替代;

  • 它甚至支持使用Jasmine-jQuery扩展测试前端代码;

  • 除了行为驱动开发之外,它还支持测试驱动开发;

  • 与其他JavaScript测试框架不同,Jasmine测试框架具有内置断言;

  • 它带有一个内置的测试运行器,可用于运行浏览器测试;

  • 提供丰富的内置匹配器,可用于匹配期望并向测试用例中添加断言,比如toEqual、toBe、toBeTruthy、toBeFalsy、toContain、toBeDefined、toBeUndefined、toBeNull、toBeNaN等。

三、将JasmineJavaScript测试框架与Selenium结合使用的优势

Jasmine和Selenium分别广泛用于JavaScript自动化测试和Web UI自动化测试。在处理基于JavaScript的Web UI项目时,最好将这两种工具结合起来,充分利用它们:

  •  Jasmine JavaScript测试框架和Selenium自动化测试在开源、易于实现和扩展方面相得益彰;

  •  它们与几乎所有浏览器和平台兼容的能力是另一个额外的优势;

  •  通过使用Selenium Grid,可以通过并行执行更快地进行Jasmine测试。

四、Jasmine入门

在了解了一些关于JavaScript中Jasmine测试框架的内容和原因后,接下来,在Selenium Jasmine教程的这一部分中,我们将了解Jasmine的工作流程并了解编写测试场景的基础知识。

假设我们需要使用Jasmine JavaScript测试框架测试文件test.js,输出文件SpecRunner.html,它将运行来自spec.js的所有测试用例,输入Lib,然后在浏览器中显示结果。

  • Lib:由内置JavaScript文件组成,有助于测试项目中的各种功能和其他JS文件;

  •  SpecRunner.html:一个常用的html文件,它将在浏览器中呈现测试运行的输出;

  •  test.js:该文件包含实际的功能/被测代码,将在spec.js和lib文件的帮助下进行测试;

  •  spec.js:也称为测试用例文件,它包含要测试文件的所有测试用例。

以下是Jasmine测试的基本构建block:

Suite Block

Suite构成了Jasmine JavaScript测试框架的基本构建block。一个Suite由用于测试特定文件的测试用例或规范组成,由两个block组成:describe()block和it()block。

ldescribe()

describe()用于对在it()下编写的相关测试用例进行分组。除非测试套件是嵌套的,否则顶层只有一个describe()。在这种情况下,它需要一个字符串参数来命名该特定describe()block中的测试用例集合。

it()–包含规范/测试用例

这用于定义describe()block内的规范或测试用例。

Jasmine中的每个规范至少包含一个断言,这里称为期望。如果所有期望都通过规范,则称为合格规范。另一方面,如果规范中的一个或多个期望失败,则称为失败规范。

注意:由于it()和describe()block都是JavaScript函数,因此所有基本变量和范围规则都按照js代码应用于它们。此外,它们可以包含任何有效的可执行代码。这意味着describing()级别的变量可供测试套件中的所有人和it()级别访问。

 

 Expectations or Matchers

Expectations or Matchers是在Jasmine JavaScript测试框架中实现断言的一种方式。这是在期望函数的帮助下完成的,该函数将测试用例产生的实际值作为输出。

然后它与匹配函数链接,该函数获取该测试用例的预期结果,评估它们以给出布尔结果。如果期望匹配,则返回值为真,否则为假。Jasmine还提供了通过在匹配器之前添加not来检查否定断言的实用程序,以获取所需的期望函数。

所有的expect函数都在it()block下,每个it()block可以有一个或多个expect()block。Jasmine提供了广泛的内置匹配器,并允许你通过自定义匹配器扩展匹配器。

下面通过一个小例子来了解describe()、it()和expect()block的用法和实现过程。我们将测试名为Addition.js的文件,该文件具有相应的规范文件,其中包含的测试用例为AdditionSpec.js。

Jasmine JavaScript测试框架还使用嵌套的describe()block为嵌套套件提供支持。以下是一个带有嵌套相同Addition.js的规范文件的示例。

五、使用独立的JasmineDistribution进行Selenium自动化测试

要开始使用Jasmine,请按照以下提到的步骤完成系统设置。

第一步:从官网下载最新版本的Jasmine;

第2步:从此页面下载所选版本的独立zip;

第3步:在你的系统中创建一个新目录,然后向其中添加一个子目录;

第4步:将下载的独立zip移动到此子目录中并在此处解压缩。解压缩后,你的目录结构应如下所示。

 

第5步:为了验证设置,请在你的Web浏览器中加载SpecRunner.html。如果你看到类似下面的输出,这意味着你已经在你的系统上完成了Jasmine的设置。

让我们看看如何修改它以使用AdditionSpec.js和Nested_AdditionSpec.js运行我们的Addition.js测试用例。

首先,我们将从src和spec文件夹中删除所有现有文件,为示例添加文件。执行此操作后,文件夹结构将如下所示。

更新文件后,我们还需要执行我们的规范,即根据我们在SpecRunner.html中的更改更新对spec和src文件夹下文件的引用。

打开SpecRunner.html,如下所示。

只需更新src和spec部分中的文件名并保存它,你就可以再次加载SpecRunner.html以查看结果。

六、使用npm设置Jasmine环境进行Selenium自动化测试

为了开始使用JavaScript中的Jasmine框架进行Selenium自动化测试,我们需要在我们的系统中进行一些先决条件设置:

步骤1:确保系统上安装了最新的JavaScript版本。此外,检查你系统上的node.js和npm,并根据需要升级到最新版本。

第2步:导航到要创建测试用例的目录,执行它,并通过触发npm命令安装Jasmine。

第3步:完成此操作后,我们将在同一目录中安装Chrome Driver和Selenium WebDriver,以在本地Selenium Grid上执行Jasmine Selenium测试用例。

第4步:完成所有这些后,我们就可以使用init命令初始化我们的Jasmine项目了。

jasmine init

你应该能够看到一个spec文件夹,该文件夹将进一步用于添加测试用例文件。对于这个Selenium Jasmine JavaScript教程,我们将使用以下.js文件。

在此示例文件中,我们自动化了一个场景以导航到登录页面,然后验证页面上的欢迎消息。我们使用了本地Selenium WebDriver并在Chrome浏览器上运行测试。要执行测试用例,如果你与文件处于同一目录级别,请使用以下命令。

触发后,你将看到系统上打开一个chrome浏览器选项卡并重定向到给定页面,验证成功后,浏览器关闭,终端显示如下日志。

到这里,本教程就结束了,开始使用Jasmine和JavaScript编写你的第一个Selenium自动化测试代码吧!

参考文章:https://www.lambdatest.com/blog/selenium-jasmine-javascript-testing-framework-tutorial/

文章标签: 自动化测试
咨询软件测试