基于Selenium和Pytest的Web自动化测试框架应用

2024-01-24 08:52马立鑫刘海燕张兵权
电脑知识与技术 2023年34期
关键词:自动化测试

马立鑫 刘海燕 张兵权

摘要:文章介绍了一个基于Selenium、Pytest和Allure的Web自动化测试框架,它能够提高测试效率,减少测试人员的工作量,并生成美观的测试报告。详细介绍了该框架的功能、组成部分、实现与应用以及使用Jenkins进行持续集成的过程。该框架能够帮助团队更高效地测试Web应用。

关键词:Selenium;Pytest;自动化测试

中图分类号:TP311      文献标识码:A

文章编号:1009-3044(2023)34-0052-03

开放科学(资源服务)标识码(OSID)

0 引言

如今越来越多的企业应用选择使用B/S架构(即Web应用),B/S架构相对于C/S架构更具有跨平台、维护简便、数据安全性高、部署灵活性强和兼容性好等优点。这些特点使得B/S架构成为大多数Web应用程序开发的首选架构[1]。

随着Web应用不断的扩充,Web应用的自动化测试也在逐渐成为软件自动化测试的重要内容。近年来诞生了许多自动化测试工具,比较成熟的有QTP、Selenium、RFT等[2]65,其中Selenium具有多项优良特性,成为Web应用测试最受欢迎的工具之一。本文将基于Selenium并结合Pytest、Allure等工具实现一个Web自动化测试框架。

1 自动化测试相关技术和工具

1.1 Selenium测试工具

Selenium可以模拟真实用户操作,以此进行Web自动化测试。Selenium具有开源免费的特点,可以进行二次开发,具有一定的可扩展性[3]16。

1.2 Pytest测试框架

Pytest是一个非常成熟的Python测试框架,它可以和Selenium结合实现自动化测试,也可以结合Allure-pytest插件生成Allure报告。

1.3 Allure报告生成工具

Allure是一款轻量级的自动化测试报告生成框架。它支持绝大部分测试框架,它可以生成美观、易读的测试报告,提供了详细的测试结果和统计信息。

1.4 Jenkins持续集成工具

Jenkins是一个开源的持续集成和交付工具,它能够帮助团队自动执行测试任务,提高了测试的效率[4]108。

2 框架功能分析

2.1 功能自动化测试

Web项目的功能测试属于黑盒测试。具体测试内容包括:网页链接是否可以正常打开与关闭,网页内容是否显示无误,网页元素功能是否正常等。主要操作方式是通过对元素进行识别、定位、点击、文本输入等完成测试[5]105。

2.2 页面对象管理

页面对象设计模式用于管理和组织 Web 自动化测试代码。在页面对象模式中,每个页面都有一个对应的页面对象类,每个类中封装了相关的元素定位方式和操作方法,测试脚本只需要调用类中的方法即可完成对应业务逻辑的测试[2]65。

2.3 框架的主要功能

自动化测试框架需要完成Web应用的测试需求,主要功能包括:测试用例的维护和管理,保证测试数据的完整[3]109;确保数据驱动测试的实现;能够完成被测项目业务逻辑的封装,并组合页面元素的操作实现对应的业务逻辑;可以很好地通过可视化的测试报告呈现测试结果;具有优良的可扩展性;能够提高测试的效率。

2.4 框架的组成部分

测试模块主要由基础类库层、页面封装层、测试用例层、工具模块、持续集成工具等构成,如图1所示。

1) 基础类库层:Common包中存放着公共类其中封装了所有操作,包括查找一个元素、输入文本、点击操作等操作。在测试过程中还有一些场景需要进行截图操作,在基础类库层中定义一个截图方法并指定截图的存储路径,截图保存时命名为“页面(功能名称)(当前时间).png”格式。

2) 页面封装层:Page包中的所有页面层均继承基础类库层,在页面层中封装元素的定位方式包括:Xpath、ID、CSS等八种定位方式和元素的定位路径,并调用基础类库层实现元素的定位与操作[4]109。

3) 测试用例层:TestCase包中存放测试用例文件,每个测试用例文件都包含一个完整业务逻辑的测试用例。测试用例层可以调用一个或多个页面封装层,来实现特定场景的测试[4]。

4) 工具模块:Utils包中存放工具类,其中包含自定义日志类,在其中定义日志的存储路径、日志的级别等。

5) 持续集成工具:测试框架集成了Jenkins持续集成工具,构建完成后自动生成测试报告[4]108,测试人员可以通过Jenkins管理员账号查看测试报告和日志。

3 框架实现与应用

3.1 环境搭建

实现自动化测试首先需要安装Python3软件并配置环境变量。然后安装Selenium、Pytest、Allure-pytets和Jenkins等工具。Selenium用于Web应用自动化测试。Pytest用于组织和执行测试脚本。Allure用于生成丰富的测试报告。Jenkins用于自动化执行测试任务。

此外还需下载对应的浏览器驱动,例如Chrome浏览器需要下载Chrome Driver,用于Selenium與浏览器进行交互。

安装完成后,使用Selenium提供的API结合Python编程语言编写测试脚本,使用Pytest框架组织和执行测试脚本,使用Allure-pytest生成测试报告,最后使用Jenkins进行持续集成,自动化执行测试任务。

本系统使用的主要工具架构图如图2所示。

3.2 测试用例设计

本文以某系统的登录模块,单车管理模块作为自动化测试框架的测试对象,该部分的测试用例设计如表1所示。采用等价类划分法设计登录模块的测试用例。

3.3 自动化测试实现

在进行测试实现时,首先需要进行测试页面的页面对象设计,以实现页面元素的封装;其次需要进行测试用例的封装,采用数据驱动的方式来组织测试数据;完成以上步骤后执行测试,生成测试报告;最后使用持续集成工具来构建项目并自动执行测试。

1) 页面对象设计

本框架在模块设计上使用了Page-Object思想,每个页面都会有一个对应的页面类,在页面类中封装该页面的元素和操作方法。 以登录模块为例,在Login类中以元组的形式封装登录页面所需的用户名、密码和登录按钮,封装代码如图3所示。

图3方框中标出的对象自上而下分别为用户名输入框、密码输入框以及登录按钮,以元组的方式封装元素定位方式By.XPATH和定位路径。

2) 数据驱动

使用Pytest内置的参数化功能进行数据封装实现数据驱动,完成测试数据和测试逻辑分离。以登录模块为例,将登录所需的用户名和密码封装为一个元组,使用Pytest的参数化装饰器将此元组作为参数传递给登录函数,關键代码如图4所示。

图4方框中使用了Pytest的 @pytest.mark.parametrize修饰器,将用户名和密码封装为一个元组并作为参数传递给登录函数,在函数中进行调用完成登录功能的测试。

3) 测试报告

在测试框架中使用Allure-pytest库生成自定义测试报告。该库提供了修饰器和注解,用于标注测试用例的功能模块、标题以及重要级别,从而生成详细的测试报告。在测试报告中可以查看测试用例状态图,该图标注了测试用例通过百分比,还标注出了失败故障以及跳过的比例。报告样式如图5所示。

除用例状态图外,还可以查看详细的功能报告,其中包括测试模块、测试用例、测试数据、测试用例耗时,以及测试日志等内容详细界面如图6所示。

图6中左半部分为所有的测试模块及其详细数据,例如在登录模块下可以看到五个测试用例,在测试用例下可以看到测试数据、用例状态和用例耗时。右半部分是单个测试用例的详细数据,主要包括测试用例的优先级、耗时、参数和日志。

4) 持续集成工具

本框架使用Jenkins作为持续集成工具,用于自动化打包部署和测试报告的生成。在Jenkins中,可以通过点击测试报告来查看详细的测试结果。每次构建完成后,可以查看上次构建的成功与失败情况,以及构建所花费的时间等信息。具体的界面如图7所示。

图7中方框标出的对象从左往右依次是查看测试报告按钮、上次成功时间、上次失败时间、上次持续时间以及构建按钮。

3.4 框架评估

本框架可以增加代码的复用率,可以生成较美观的测试报告,在回归测试以及其他测试中具有较好的效果。测试人员可以较轻松地完成测试工作,通过自定义的测试报告和截图可以很好地分析出测试失败的原因,因此使用本框架可以帮助团队更高效地测试Web应用。

4 结束语

本文提出的一种基于Selenium和Pytest的Web自动化测试框架,可以减少代码冗余,以及编写脚本的时间,提高测试效率,减少测试工作量,使用该框架可以生成优美的测试报告,用例执行后生成截图和日志供测试人员分析,使用本框架可以更高效、更便捷地完成测试任务。本框架在一些任务上还存在不足,例如测试手机登录时选择验证码登录的功能不能实现自动化,对于一些复杂的验证码,则需要在后期的研究中进行实现。

参考文献:

[1] 单攀攀.一种基于Selenium与Unittest的Web自动化测试框架[J].信息技术与网络安全,2021,40(9):77-80.

[2] 羊昌燕,邓印凯.基于Selenium的自动化测试框架设计[J].信息技术与信息化,2021(10):65-68.

[3] 杨静.自动化测试平台的设计与实现[D].北京:北京交通大学,2020.

[4] 吴伶琳,方巍.Web自动化测试开源框架研究[J].信息技术与信息化,2022(11):108-111.

[5] 朱佳艺,刘从军.基于Selenium的自动化测试框架设计与实现[J].软件导刊,2023,22(5):103-108.

【通联编辑:谢媛媛】

猜你喜欢
自动化测试
浅谈空调控制器自动化测试