软件测试/人工智能|如何使用ChatGPT编写符合PO模式的数据驱动测试框架

简介: 软件测试/人工智能|如何使用ChatGPT编写符合PO模式的数据驱动测试框架

image.png

简介

上一篇文章我们介绍了使用ChatGPT帮我们编写自动化测试脚本,但是上文编写的脚本并不符合我们的PO设计模式,作为现在主流的设计模式,更加方便我们去编写脚本,一旦页面发生变动,我们的代码改动也会变小,所以我们的目标不是使用ChatGPT编写自动化脚本,而是要使用ChatGPT来编写符合PO设计模式的自动化脚本,而且PO设计模式又经常会结合数据驱动,所以本文就来给大家介绍一下使用ChatGPT来生成符合PO模式的数据驱动测试。

演练示例

提问:请使用PO设计模式编写一个网站登录的Web自动化测试脚本,要求使用到Pytest测试框架和Selenium Web自动化框架。

ChatGPT回复如下:

当使用Page Object 设计模式时,可以将网站的不同页面抽象为单独的类,每个类对应一个页面。这里是一个示例,假设有登录页面和用户账户页面:

首先,创建一个 login_page.py 文件:

from selenium import webdriver
from selenium.webdriver.common.by import By

class LoginPage:
    def __init__(self, driver):
        self.driver = driver
        self.url = "https://example.com/login"
        self.username_input = (By.ID, "username")
        self.password_input = (By.ID, "password")
        self.login_button = (By.ID, "login-button")

    def load(self):
        self.driver.get(self.url)

    def set_username(self, username):
        self.driver.find_element(*self.username_input).send_keys(username)

    def set_password(self, password):
        self.driver.find_element(*self.password_input).send_keys(password)

    def click_login(self):
        self.driver.find_element(*self.login_button).click()

然后,创建一个user_account_page.py文件:

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

    def get_title(self):
        return self.driver.title

接下来,编写一个测试文件test_login.py,利用Page Object模式执行登录并验证:

import pytest
from selenium import webdriver
from login_page import LoginPage
from user_account_page import UserAccountPage

@pytest.fixture(scope="module")
def browser():
    driver = webdriver.Chrome()
    yield driver
    driver.quit()

def test_login(browser):
    login_page = LoginPage(browser)
    user_account_page = UserAccountPage(browser)

    login_page.load()
    login_page.set_username("your_username")
    login_page.set_password("your_password")
    login_page.click_login()

    # 验证登录后页面的标题
    assert "User Account" in user_account_page.get_title(), "页面标题未显示用户账户信息"

这个测试文件使用了 LoginPageUserAccountPage 类来执行登录并验证登录后的页面标题。LoginPage 类包含加载页面和执行登录的方法,而 UserAccountPage 类包含获取页面标题的方法。

但是我们也发现,该脚本还未实现数据驱动测试,我们可以继续提问,实现数据驱动测试。

提问:我现在想把用户名密码使用数据驱动+参数化的方式传入,请修改你的 test_login 的代码。

ChatGPT回复如下:

当使用数据驱动和参数化的方式传入用户名和密码时,可以使用pytest的参数化装饰器。在测试文件中添加参数化装饰器,并将测试数据传入测试函数。

import pytest
from selenium import webdriver
from login_page import LoginPage
from user_account_page import UserAccountPage

@pytest.fixture(scope="module")
def browser():
    driver = webdriver.Chrome()
    yield driver
    driver.quit()

# 测试数据(用户名和密码)
testdata = [
    ("username1", "password1"),
    ("username2", "password2"),
    # 可以添加更多的测试数据
]

@pytest.mark.parametrize("username, password", testdata)
def test_login(browser, username, password):
    login_page = LoginPage(browser)
    user_account_page = UserAccountPage(browser)

    login_page.load()
    login_page.set_username(username)
    login_page.set_password(password)
    login_page.click_login()

    # 验证登录后页面的标题
    assert "User Account" in user_account_page.get_title(), "页面标题未显示用户账户信息"

在这个示例中,testdata 列表包含了多组用户名和密码,通过 @pytest.mark.parametrize 装饰器将这些数据传递给 test_login 函数。测试将会针对每一组数据执行登录操作,并验证登录后页面的标题。

总结

本文主要介绍了使用ChatGPT实现PO设计模式和数据驱动测试的结合,我们需要注意的是,我们在提问时可以将PO设计模式和数据驱动测试分开,这样方便我们对ChatGPT的回复进行纠正,也把更为复杂的任务简单化了,希望本文可以帮到大家。

image.png

相关文章
|
5月前
|
安全 数据管理 测试技术
告别蛮力:让测试数据生成变得智能而高效
告别蛮力:让测试数据生成变得智能而高效
558 120
|
6月前
|
存储 测试技术 API
数据驱动开发软件测试脚本
今天刚提交了我的新作《带着ChatGPT玩转软件开发》给出版社,在写作期间跟着ChatGPT学到许多新知识。下面分享数据驱动开发软件测试脚本。
236 0
|
9月前
|
人工智能 缓存 自然语言处理
别再手搓测试数据了!AE测试数据智造系统揭秘
本文介绍如何通过构建基于大语言模型的测试数据智造Agent,解决AliExpress跨境电商测试中数据构造复杂、低效的问题,推动测试效率提升与智能化转型。
别再手搓测试数据了!AE测试数据智造系统揭秘
|
分布式计算 Shell MaxCompute
odps测试表及大量数据构建测试
odps测试表及大量数据构建测试
|
开发框架 .NET Java
C#集合数据去重的5种方式及其性能对比测试分析
C#集合数据去重的5种方式及其性能对比测试分析
251 11
|
12月前
|
机器学习/深度学习 存储 人工智能
AI职场突围战:夸克应用+生成式人工智能认证,驱动“打工人”核心竞争力!
在AI浪潮推动下,生成式人工智能(GAI)成为职场必备工具。文中对比了夸克、豆包、DeepSeek和元宝四大AI应用,夸克以“超级入口”定位脱颖而出。同时,GAI认证为职场人士提供系统学习平台,与夸克结合助力职业发展。文章还探讨了职场人士如何通过加强学习、关注技术趋势及培养合规意识,在AI时代把握机遇。
|
11月前
|
机器学习/深度学习 人工智能 自然语言处理
人工智能应用领域有哪些
本文全面探讨了人工智能(AI)的应用领域和技术核心,涵盖医疗、交通、金融、教育、制造、零售等多个行业,并分析了AI技术的局限性及规避策略。同时,介绍了生成式人工智能认证项目的意义与展望。尽管AI发展面临数据依赖和算法可解释性等问题,但通过优化策略和经验验证,可推动其健康发展。未来,AI将在更多领域发挥重要作用,助力社会进步。
|
机器学习/深度学习 人工智能 运维
人工智能在事件管理中的应用
人工智能在事件管理中的应用
371 21
|
机器学习/深度学习 人工智能 搜索推荐
探索人工智能在现代医疗中的革新应用
本文深入探讨了人工智能(AI)技术在医疗领域的最新进展,重点分析了AI如何通过提高诊断准确性、个性化治疗方案的制定以及优化患者管理流程来革新现代医疗。文章还讨论了AI技术面临的挑战和未来发展趋势,为读者提供了一个全面了解AI在医疗领域应用的视角。
303 11
|
机器学习/深度学习 人工智能 自然语言处理
人工智能在医疗诊断中的应用与前景####
本文深入探讨了人工智能(AI)技术在医疗诊断领域的应用现状、面临的挑战及未来发展趋势。通过分析AI如何辅助医生进行疾病诊断,提高诊断效率和准确性,以及其在个性化医疗中的潜力,文章揭示了AI技术对医疗行业变革的推动作用。同时,也指出了数据隐私、算法偏见等伦理问题,并展望了AI与人类医生协同工作的前景。 ####
962 0

热门文章

最新文章