目录
一、概述
二、框架设计
测试用例管理
关键字库封装
数据驱动设计
日志记录和报告生成
三、框架实现
测试用例管理
关键字库封装
数据驱动设计
日志记录和报告生成
四、框架使用
编写测试用例
编写关键字库
执行测试
五、总结
在软件开发过程中,对产品进行有效的测试是非常重要的。为了提高测试效率和质量,多数企业采用自动化测试来代替人工测试。其中,关键字驱动的自动化测试框架成为了自动化测试领域的主流。
本文将介绍一种基于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 文件,模板文件中包含了测试用例所需的 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 文件中编写测试用例,如下所示:
测试用例名称 | 操作关键字 | 操作定位符 | 输入值 |
---|---|---|---|
登录测试 | 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+_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1AF411T7qJ/?spm_id_from=333.999.0.0&vd_source=6e2d6c374fd551babe1ac6a5e60c5a75