一文轻松教会你基于Excel+关键字驱动的自动化测试框架封装

目录

一、概述

二、框架设计

测试用例管理

关键字库封装

数据驱动设计

日志记录和报告生成

三、框架实现

测试用例管理

关键字库封装

数据驱动设计

日志记录和报告生成

四、框架使用

编写测试用例

编写关键字库

执行测试

五、总结


一、概述

在软件开发过程中,对产品进行有效的测试是非常重要的。为了提高测试效率和质量,多数企业采用自动化测试来代替人工测试。其中,关键字驱动的自动化测试框架成为了自动化测试领域的主流。

本文将介绍一种基于EXCEL+关键字驱动的自动化测试框架封装方案,并分别从框架设计、实现、使用等角度进行详细阐述。

二、框架设计

测试用例管理

测试用例编写是自动化测试的核心工作之一。因此,在框架设计时,需要考虑如何管理测试用例。这里我们采用 EXCEL 作为测试用例的存储载体,每个测试用例以一行数据的形式保存。同时,可以建立不同的 Sheet 来区分不同的测试模块,方便管理。

关键字库封装

关键字库是实现自动化测试的核心部分。我们可以将关键字库中定义的操作拆分成不同的函数,并将其封装到类库中。这样,测试人员在编写测试用例时只需调用这些函数即可,大大提高了测试用例的编写效率。

数据驱动设计

在测试过程中,需要使用一些测试数据来完成测试。我们可以将这些数据存储在 EXCEL 文件中,并通过关键字库中定义的读取 EXCEL 的函数来获取数据。这样,可以方便地对测试用例进行数据驱动测试。

日志记录和报告生成

当测试执行完毕后,需要对测试结果进行分析和统计,并生成测试报告。因此,在框架设计时需要考虑如何记录测试日志和生成测试报告。可以将测试过程中产生的信息记录到日志文件中,并通过关键字库中定义的生成测试报告函数生成测试报告。      2023最新合集Python自动化测试开发框架【全栈/实战/教程】合集精华,学完年薪40W+_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1AF411T7qJ/?spm_id_from=333.999.0.0&vd_source=6e2d6c374fd551babe1ac6a5e60c5a75

                           一文轻松教会你基于Excel+关键字驱动的自动化测试框架封装_第1张图片

三、框架实现

测试用例管理

首先,我们需要准备一个模板 EXCEL 文件,模板文件中包含了测试用例所需的 Sheet 和具体的测试用例数据。测试用例数据由测试用例名称、操作关键字、操作定位符、输入值等信息组成。其中,操作关键字是调用关键字库中函数的标识符。

关键字库封装

关键字库是自动化测试的核心部分,包括了所有的测试操作方法。我们可以将关键字库中定义的操作拆分成不同的函数,并将其封装到类库中。这里,我们采用 Python 语言进行开发,并使用 Selenium WebDriver 作为浏览器驱动。

以登录操作为例,代码如下:

class LoginPage():

    def __init__(self, driver):
        self.driver = driver

    def open(self):
        """打开登录页面"""
        self.driver.get("https://www.example.com/login")

    def input_username(self, username):
        """输入用户名"""
        input_username = self.driver.find_element_by_id("username")
        input_username.clear()
        input_username.send_keys(username)

    def input_password(self, password):
        """输入密码"""
        input_password = self.driver.find_element_by_id("password")
        input_password.clear()
        input_password.send_keys(password)

    def click_login_button(self):
        """点击登录按钮"""
        login_button = self.driver.find_element_by_id("login-button")
        login_button.click()

上述代码中定义了一个 LoginPage 类,包括了测试登录操作的所有方法。其中,open() 方法用于打开登录页面,input_username()、input_password() 和 click_login_button() 三个方法分别用于输入用户名、密码和点击登录按钮。

数据驱动设计

在测试过程在框架实现中,需要使用测试用例中的数据来完成测试。我们可以通过 xlrd 库来读取 EXCEL 文件中的数据,如下所示:

import xlrd

class ExcelUtils():

    def __init__(self, file_path):
        self.file_path = file_path

    def get_case_data(self, sheet_name, case_name):
        """获取指定测试用例的数据"""
        workbook = xlrd.open_workbook(self.file_path)
        worksheet = workbook.sheet_by_name(sheet_name)

        for i in range(1, worksheet.nrows):
            row_values = worksheet.row_values(i)
            if row_values[0] == case_name:
                return row_values[1:]

        raise ValueError(f"找不到测试用例 {case_name}")

上述代码中定义了一个 ExcelUtils 类,包含了读取 EXCEL 中指定测试用例数据的方法。在该方法中,首先打开 EXCEL 文件,并获取指定 Sheet 中的数据。然后遍历每一行数据,查找指定测试用例,并返回其对应的数据。如果没有找到指定的测试用例,则抛出异常。

日志记录和报告生成

在测试执行过程中,我们需要记录测试日志和生成测试报告。这里我们可以使用 Python 的 logging 模块来记录测试日志,同时可以使用 HTMLTestRunner 模块来生成测试报告。具体实现代码如下:

import logging
import time
import unittest
from HTMLTestRunner import HTMLTestRunner

class TestLogin(unittest.TestCase):

    @classmethod
    def setUpClass(cls):
        cls.logger = logging.getLogger(__name__)
        cls.logger.setLevel(logging.INFO)
        file_handler = logging.FileHandler("test.log")
        formatter = logging.Formatter("[%(asctime)s] [%(levelname)s] %(message)s")
        file_handler.setFormatter(formatter)
        cls.logger.addHandler(file_handler)

    def setUp(self):
        self.logger.info("测试用例开始执行")

    def tearDown(self):
        self.logger.info("测试用例执行完毕")

    @classmethod
    def tearDownClass(cls):
        report_path = f"report_{time.strftime('%Y%m%d%H%M%S')}.html"
        with open(report_path, "wb") as f:
            runner = HTMLTestRunner(stream=f, title="测试报告", description="测试结果详细信息:")
            runner.run(unittest.TestLoader().loadTestsFromTestCase(TestLogin))

上述代码中,我们定义了一个 TestLogin 类,继承自 unittest.TestCase。在 setUp() 方法中记录测试日志,tearDown() 方法中记录测试结束日志。在 tearDownClass() 方法中生成测试报告,并将其保存到本地。

2023最新合集Python自动化测试开发框架【全栈/实战/教程】合集精华,学完年薪40W+_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1AF411T7qJ/?spm_id_from=333.999.0.0&vd_source=6e2d6c374fd551babe1ac6a5e60c5a75

                    一文轻松教会你基于Excel+关键字驱动的自动化测试框架封装_第2张图片

 

四、框架使用

编写测试用例

首先,在 EXCEL 文件中编写测试用例,如下所示:

测试用例名称 操作关键字 操作定位符 输入值
登录测试 open_browser Chrome
open
input_username id=username test_user
input_password id=password test_pass
click_login_button id=login-button

编写关键字库

根据测试用例的操作关键字,编写相应的关键字库。例如,实现登录操作后,可以在关键字库中添加如下函数:

class KeywordLibrary():

    def login(self, username, password):
        """登录"""
        login_page = LoginPage(self.driver)
        login_page.open()
        login_page.input_username(username)
        login_page.input_password(password)
        login_page.click_login_button()

其中,login() 函数用于执行登录操作,参数包括用户名和密码。

执行测试

使用 unittest 模块执行测试用例,如下所示:

其中,login() 函数用于执行登录操作,参数包括用户名和密码。

import unittest
from selenium import webdriver
from keyword_utils import KeywordLibrary
from excel_utils import ExcelUtils

class TestLogin(unittest.TestCase):

    @classmethod
    def setUpClass(cls):
        cls.driver = webdriver.Chrome()
        cls.keyword_lib = KeywordLibrary(cls.driver)
        cls.excel_utils = ExcelUtils("test_case.xlsx")

    def test_login(self):
        case_data = self.excel_utils.get_case_data("login", "登录测试")
        self.keyword_lib.login(case_data

上述代码中,我们定义了一个 TestLogin 类,继承自 unittest.TestCase。在 setUpClass() 方法中初始化 WebDriver、关键字库和 EXCEL 文件,以便后续调用。在 test_login() 方法中读取测试用例数据,并调用关键字库中的 login() 方法执行登录操作。在 tearDownClass() 方法中关闭 WebDriver 实例。

在主函数中使用 unittest.main() 执行测试。

五、总结

本文介绍了一种基于 EXCEL+关键字驱动的自动化测试框架封装方案,并从框架设计、实现和使用三个角度进行详细阐述。采用该框架可以大大提高自动化测试的效率和精度,同时也为自动化测试的进一步发展提供了思路。

2023最新合集Python自动化测试开发框架【全栈/实战/教程】合集精华,学完年薪40W+_哔哩哔哩_bilibiliicon-default.png?t=N2N8https://www.bilibili.com/video/BV1AF411T7qJ/?spm_id_from=333.999.0.0&vd_source=6e2d6c374fd551babe1ac6a5e60c5a75一文轻松教会你基于Excel+关键字驱动的自动化测试框架封装_第3张图片

 

你可能感兴趣的:(自动化测试,python,开发语言,职场和发展,软件测试,自动化测试)