如何构建Python自动化测试框架(完整)

发布时间:2024年01月10日

本文将介绍如何使用Python构建一个自动化测试框架,覆盖到了从架构设计到示例代码的全过程。【文末有配套视频学习】

1、搭建自动化测试框架会用到的技术

1)Python编程语言

2)Pytest测试框架

3)Selenium WebDriver

4)REST API 测试库(例如:Requests库)

5)数据库操作库(例如:SQLite3)

2、自动化测试框架组成部分及目录结构

2.1 组成部分

1)测试用例管理器(Test Case Manager)

用于管理测试用例及其相关的信息,例如:测试用例编号、测试用例名称、测试用例预期结果等。

2)测试数据管理器(Test Data Manager)

用于存储测试数据,例如:测试环境配置信息、测试数据文件等。

3)测试引擎(Test Execution Engine)

用于按照测试计划执行测试用例,并将测试结果记录在测试报告中。

4)测试报告生成器(Test Report Generator)

用于将测试结果转换为易于理解的格式,例如:HTML格式报告。

2.2 目录结构

├──configs #存放配置文件,例如数据库配置文件、测试环境配置文件等
├──data #存放测试数据文件,例如Excel或CSV数据文件等
├──reports #存放测试报告文件,例如HTML格式报告
├──src
│ ├───page_objects #存放页面对象,例如每个页面的元素定位、操作方法等

│ ├───test_cases #存放测试用例文件,例如py文件
│ ├───test_data_handlers #存放测试数据处理器,例如读取Excel或CSV文件

并返回处理后的数据
│ └───utils #存放各种工具函数,例如数据库连接、日志打印等
├──requirements.txt #包含项目所需依赖的Python包及其版本号

└──run_tests.py #执行测试用例的

3、示例代码

# src/test_cases/test_login.py


from src.page_objects.login_page import LoginPage
from src.test_data_handlers.data_handler import read_csv_file
from src.utils import get_database_connection
import pytest
from selenium.webdriver import Chrome

@pytest.fixture(scope='module')
def driver():
    driver = Chrome()
    driver.implicitly_wait(10)
    yield driver
    driver.quit()

@pytest.fixture(scope='module')
def login_page(driver):
    login_page = LoginPage(driver)
    return login_page

@pytest.fixture(scope='function')
def test_data():
    test_data = read_csv_file('data/testdata.csv')
    return test_data

def insert_test_result(test_case_id, result):
    conn = get_database_connection()
    cursor = conn.cursor()
    sql = f"INSERT INTO test_results (test_case_id, result)

    VALUES ({test_case_id}, '{result}')"
    cursor.execute(sql)
    conn.commit()
    conn.close()

def test_login_successful(login_page, test_data):
    for data in test_data:
        login_page.login(data['username'], data['password'])
        if data['expected_result'] == 'True':
            assert login_page.is_login_successful() == True
            insert_test_result(1, 'pass')
        else:
            assert login_page.is_error_message_displayed() == True

insert_test_result(1, 'fail')

在上面的示例代码中,提供了一个测试用例 test_login_successful 用于测试登录功能。同时,使用CSV格式的测试数据文件,通过测试数据处理器读取并返回处理后的数据。

从?utils.py 文件中,看到如何连接数据库,这是用来记录测试结果的。insert_test_result 函数,插入测试结果数据到SQLite3数据库中。通过执行 run_tests.py 脚本文件,运行自动化测试用例。

希望这篇文章能够给你提供一些启发,让你更好地理解如何构建Python自动化测试框架。

同时,在这我为大家准备了一份软件测试视频教程(含面试、接口、自动化、性能测试等),就在下方,需要的可以直接去观看,也可以直接【点击文末小卡片免费领取资料文档】

软件测试视频教程观看处:

【2024最新版】Python自动化测试15天从入门到精通,10个项目实战,允许白嫖。。。

文章来源:https://blog.csdn.net/huace3852/article/details/135504333
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。