Selenium3+Pytest+Allure落地Python Web自动化测试

295 阅读4分钟

一、技术简介

Selenium3 是用于 Web 应用程序测试的强大工具,支持多种浏览器,能模拟用户在浏览器中的操作,如点击、输入、滚动等;Pytest 是一款简洁高效的 Python 测试框架,拥有灵活的测试用例编写方式、强大的插件系统和丰富的断言方法;Allure 则专注于测试报告生成,可将测试结果以美观、直观且信息丰富的形式呈现,方便团队成员查看和分析测试情况。将这三者结合,能够构建一套完整、高效的 Python Web 自动化测试体系。

二、环境搭建

(一)安装 Python

确保已安装 Python,建议使用 Python 3.6 及以上版本。可以从 Python 官方网站下载对应系统的安装包,按照安装向导完成安装,安装过程中记得勾选 “Add Python to PATH” 选项,方便后续在命令行中使用 Python 命令。

(Selenium3+Pytest+Allure落地Python Web自动化测试)---“夏のke”---weiranit---.---fun/3299/

(二)安装 Selenium3

打开命令行工具(如 Windows 的命令提示符或 Linux 的终端),输入以下命令安装 Selenium3:

pip install selenium


同时,还需要下载对应浏览器的驱动程序,如 Chrome 浏览器需下载 ChromeDriver,Firefox 浏览器需下载 GeckoDriver。将驱动程序下载后,解压并将其所在路径添加到系统环境变量中,确保 Selenium 能够找到驱动来启动浏览器。

# (三)安装 Pytest

在命令行中输入:

pip install pytest


安装完成后,可通过pytest --version命令检查是否安装成功。

# (四)安装 Allure

Allure 的安装分两步,首先安装 Allure 命令行工具,可从 Allure 官方网站下载对应系统的安装包,解压后将其 bin 目录添加到系统环境变量。然后安装 Allure 的 Python 插件,在命令行输入:

pip install allure-pytest


# 三、编写测试脚本

# (一)初始化 Selenium 驱动

在 Python 代码中,导入 Selenium 相关模块,并初始化浏览器驱动。以 Chrome 浏览器为例:

from selenium import webdriver


driver = webdriver.Chrome()

# (二)编写测试用例

使用 Pytest 的语法编写测试用例,Pytest 会自动识别以test_开头的函数作为测试用例。例如,测试百度搜索功能:

def test_baidu_search():


driver.get("https://www.baidu.com")

search_box = driver.find_element_by_id("kw")

search_box.send_keys("Python自动化测试")

search_button = driver.find_element_by_id("su")

search_button.click()

assert "Python自动化测试" in driver.title

上述代码中,先打开百度首页,定位搜索框并输入关键词,点击搜索按钮,最后使用 Pytest 的断言方法验证搜索结果页面的标题是否包含输入的关键词。

# (三)参数化测试

Pytest 支持参数化测试,通过pytest.mark.parametrize装饰器实现。例如,测试不同关键词的搜索:

import pytest


@pytest.mark.parametrize("keyword", ["Selenium", "Pytest", "Allure"])

def test_baidu_search_param(keyword):

driver.get("https://www.baidu.com")

search_box = driver.find_element_by_id("kw")

search_box.send_keys(keyword)

search_button = driver.find_element_by_id("su")

search_button.click()

assert keyword in driver.title

这样可以使用不同的关键词多次执行测试用例,提高测试覆盖率。

# 四、执行测试与生成报告

# (一)执行测试

在命令行中进入测试脚本所在目录,输入以下命令执行测试:

pytest


Pytest 会自动发现并执行所有测试用例,并在命令行中输出测试结果摘要。

# (二)生成 Allure 报告

执行测试后,输入以下命令生成 Allure 测试报告:

pytest --alluredir=./results


allure serve./results

第一条命令将测试结果数据保存到./results目录中,第二条命令启动 Allure 服务,在浏览器中打开生成的交互式测试报告,报告中详细展示了每个测试用例的执行情况、耗时、日志等信息,方便进行问题定位和分析。

# 五、测试优化与扩展

# (一)测试夹具(Fixture)

Pytest 的 Fixture 功能可以用于设置测试前置条件和清理操作。例如,创建一个用于初始化和关闭浏览器驱动的 Fixture:

import pytest


from selenium import webdriver

@pytest.fixture(scope="module")

def driver():

driver = webdriver.Chrome()

yield driver

driver.quit()

在测试用例中,通过将driver作为参数传入,即可使用该 Fixture 提供的浏览器驱动,并且在测试模块执行完毕后自动关闭浏览器。

# (二)日志记录

在测试过程中,添加日志记录有助于排查问题。可以使用 Python 内置的logging模块,在测试脚本中配置日志记录的级别、格式和输出位置,记录测试过程中的关键操作和信息。

# (三)持续集成集成

将这套测试体系集成到持续集成(CI)系统中,如 Jenkins、GitLab CI/CD 等。在代码提交或合并时自动触发测试执行,并生成 Allure 报告,实现自动化的测试流程,及时发现代码变更带来的问题 。