目录
前言
作为自动化测试人员,经常会遇到这样Selenium
测试自动化场景:需要一次又一次地执行相同的测试用例,只是使用不同的输入和环境配置,从而使工作变得冗长且多余。
为了处理这种用例冗余,大多数人都会选择可以选择参数化测试。使用参数化测试,测试人员可以再次运行相同的自动化测试脚本,但使用不同的数据。参数化测试通过利用测试方法收集结果,有助于节省重复编写相同测试所花费的时间。
在本文中,我将展示如何为Selenium
测试自动化实现JUnit
参数化测试。
为什么需要JUnit参数化测试?
让我们先从Selenium JUnit
的测试场景开始,如果有个需求想要对一个购物网站执行Selenium
自动化测试。测试人员已经为产品编写了测试用例脚本,但是你很快意识到,不仅需要针对不同的商品,而且还要针对不同的OS系统和浏览器版本
重复运行用例以确保兼容性。
首先,对于Selenium
测试自动化,我们需要多个数据集合来执行测试。随之而来的是一个跨浏览器矩阵,可以覆盖绝大多数用户的实际情况。其次,我们需要学习如何编写测试脚本从已存储的数据集中获取数据。
值得关注的是,在对Web应用程序
进行自动化测试时,很难为后续的测试迭代维护单个稳定可靠的数据源。除非是特殊基础数据以及一些极少变更的业务场景,更多的时候我们很难创建用于相同配置的同一测试用例的多个Selenium
测试自动化脚本。简而言之,硬编码只会带来大量的维护工作,因此需要JUnit参数化测试来帮助您节省Selenium
测试自动化周期中的时间和精力。
为了在我们的Selenium
测试自动化脚本中使用多个数据集,首先想到的是使用Excel
工作表来获取该数据。但是,在打算创建更具体的Selenium
测试自动化脚本的情况时,就需要使用像JUnit
这样的多合一框架。JUnit
使我们能够以更健壮的方式编写测试用例,并使我们拥有多种功能,其中之一就是参数化。
JUnit参数化的类型
两种使用JUnit参数化测试的有效方法。
-
使用
@Parameters
注解进行参数化 -
使用
Excel
文件进行参数化
首先,使用@Parameters
批注进行参数化,它允许将测试数据作为Java集合
传递给Selenium
脚本。任何数据更改,测试人员所需要做的就是使用所需数据编辑集合。
其次,使用Excel
进行参数化,测试人员可以自由地从外部文件中获取数据,无论数量是多少,都可以加载到Selenium
测试自动化脚本中。
我们还可以使用JUnit params
依赖关系,通过使用注释@ParameterizedTest
代替@Test
注解来参数化我们的测试。还可以使用下面列出的各种注释将参数传递给JUnit Parameterized Tests
:
-
ValueSource
-
EnumSou