基于Selenium+Python的web自动化测试框架详解-CSDN博客

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

一、什么是Selenium
Selenium是一个基于浏览器的自动化测试工具它提供了一种跨平台、跨浏览器的端到端的web自动化解决方案。Selenium主要包括三部分Selenium IDE、Selenium WebDriver 和Selenium Grid。

Selenium IDEFirefox的一个扩展它可以进行录制回放并把录制的操作以多种语言例如java、python等的形式导出成测试用例。

Selenium WebDriver提供Web自动化所需的API主要用作浏览器控制、页面元素选择和调试。不同的浏览器需要不同的WebDriver。

Selenium Grid提供了在不同机器的不同浏览器上运行selenium测试的能力。

本文将详细介绍如何运用Python结合Selenium WebDriver库搭建web自动化测试框架。

二、自动化测试框架
一个典型的自动化测试框架一般包括用例管理模块、自动化执行控制器、报表生成模块和log模块这些模块相辅相成

接下来介绍各模块的逻辑单元

1、用例管理模块

用例管理模块包括新增、修改、删除等操作单元这些单元又会涉及到用例书写模式测试数据库的管理、可复用库等。

2、自动化控制器

控制器是自动化用例执行的组织模块主要是负责以什么方法执行我们的测试用例.

3、报表生成模块

主要负责执行用例后的生成报告一般以HTML格式居多信息主要是用例执行情况。另外还可以配置发送邮件功能。

4、log模块

主要用来记录用例执行情况以便于高效的调查用例失败信息以及追踪用例执行情况。

三、自动化框架的设计和实现
1、需求分析

首先我们的测试对象是一个web平台基于此平台设计的框架要包含测试用例管理、测试执行控制器、测试报告以及测试日志的生成。

2、设计和实现

页面管理

假设测试web对象为一个典型单页面应用所以我们采用页面模式。页面模式是页面与测试用例之间的纽带它将每个页面抽象成一个单独的类为测试用例提供页面元素的定位和操作。

BaseClass作为父类只包含driver成员变量用来标识Selenium中的WebDriver以便在子类中定位页面元素。LoginClass和PageClass作为子类可以提供页面元素的定位和操作方法。比如登录页面。

从页面看需要操作的元素分别为登录用户名、密码、下次自动登录和登录按钮。具体实现代码如下

页面父类BaseClass.py

 LoginClass继承自BaseClass,并进行登录的元素定位以及操作实现。代码中定位了username和password并添加了设置用户名和密码的操作。

公共库模块

公共库模块是为创建测试用例服务的主要包括常量、公共函数、日志、报告等。

Common.py

 测试用例信息类用来标识测试用例并且包括执行用例、执行结果信息主要包括以下字段。

日志主要用来记录测试用例执行步骤及产生的错误信息不同的信息有不同的日志级别比如Information、Warning、Critical和Debug。由于每个测试用例产生的日志条目比较少所以在测试框架中只利用了最高级别的日志打印即Debug级别该级别也会将其他所有的日志级别的信息同样打印出来。在具体的实现中引用了Python标准库中的logging类库以便更方便的控制日志输出。

测试用例仓库

用例仓库主要用来组织自动化测试用例。每条测试用例都被抽象成一个独立的类并且均继承自unittest.TestCase类。 Python中的unittest库提供了丰富的测试框架支持包括测试用例的setUp和tearDown方法在实现用例的过程中可以重写。依托页面管理和公共库模块实现的页面方法和公共函数每一个测试用例脚本的书写都会非常清晰简洁。

从这个测试用例中我们可以看到

Setup中定义了执行测试用例前的一些实例化工作
tearDown对执行完测试做了清理和写日志文件工作
测试步骤、测试数据和测试检查点非常清晰易修改比如用户名密码
日志级别仅有Debug所以写日志仅需用同一Log方法
3、用例执行模块

执行模块主要用来控制测试用例脚本的批量执行形成一个测试集。用例的执行引用了Python标准库中的subprocess来执行nosetests的shell命令从而执行给定测试用例集中的用例。测试用例集是一个简单的纯文本文件实现过程中利用了.txt文件testcases.txt。

用例前没有“#“标记的测试用例脚本会被执行而有”#“标记的则会被忽略这样可以很方便的控制测试集的执行当然也可以创建不同的文件来执行不同的测试集。 

四、需要改进的模块
对于现有实现的测试框架已经可以满足web对象的自动化需求但还是有些可以改进提高的地方比如

部分用例可以尝试数据驱动。
二次封装selenium的By函数以便更高效定位元素。
没有进行持续化集成。
五、总结
基于Selenium实现的web自动化测试框架不仅轻量级而且灵活可以快速地开发自动化测试用例结合本篇的框架设计和一些好的实践希望对大家以后的web自动化框架的设计和实现有所帮助。

【软件测试行业现状】2023年干测试约等于49年入国军。未来已寄..测试人该何去何从【自动化测试、软件测试面试、性能测试】

 

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: python