个人对自动化测试模型理解

本文介绍了自动化测试中的数据驱动方法,强调了数据与测试脚本的分离,以及Python中ddt模块的应用。同时,文章详细解释了Page Object模式,讨论了其在提高测试可维护性和可读性上的作用。最后,简述了unittest框架的工作原理及其在测试用例组织中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据驱动是从某个数据文件(例如txt 文件、Excel 文件、CSV 文件、数据库等)中读取输入或输出的测试数据,然后以变量的形式传入事先录制好的或手工编写好的测试脚本中。在这个过程中这些变量被用作传递(输入/输出)用来验证应用程序的测试数据,而测试数据只包含在数据文件中并不是脚本里。测试脚本只是作为一个“驱动”,更恰当的说是一个传送数据的机制。相同的测试脚本使用不同的测试数据来执行,测试数据和测试行为进行了完全的分离,这样的测试脚本设计模式叫做数据驱动
在python 中使用ddt 模块进行数据驱动。
数据驱动一般流程:
① 测试框架搭建:设计测试框架,做到目录结构清晰,项目容易解读。
② 设计测试用例:测试用例的明确,数据文件以怎样的格式设计。
③ 数据文件的操作:对数据文件中的数据进行操作。
④ 测试用例的生成:包括对获取到的文件数据处理,断言的封装及测试
用例的步骤。
⑤ 运行:运行测试用例,生成测试报告。

1.数据文件操作

对数据文件读取进行封装,可以读取不同格式的测试数据。
使用Excel 操作模块 openpyxl 对文件进行读取。
在data 目录下新建ExcelUtil.py 文件。
在这里插入图片描述

2.测试用例生成

将获取的数据进行处理,使邮箱地址列数据发送到邮箱地址输入框,密码列数
据发送到密码输入框。
在case 目录下创建TestWorkerAdd.py 文件。

  1. Excel 数据处理
    将获取到的数据进行处理,需要剔除header 行和无用的数据。并且以邮箱地
    址、密码、预期结果定位、预期结果的顺序将数据返回。
    在TestWorkerAdd.py 文件中创建Case 类,Case 类中定义get_case()方法。
    在这里插入图片描述
    使用ddt,将Excel 获得的数据传入到测试步骤方法中
    在TestWorkerAdd 类中定义test_worker_add方法并
    且使用ddt.data()进行参数传递。
    在这里插入图片描述
    Page Object 模式中文称页面对象模型也叫PO 模型,是自动化测试中的一种设计模式。将每一个页面作为一个page class 类,页面中所有的测试元素封装成方法。在自动化测试过程中通过页面类得到元素方法从而对元素进行操作。这样可以将页面定位和业务操作分离,即测试对象和测试脚本分离,标准化了测试与页面的交互方式。PO 模型通过对页面元素和功能模块封装可以减少冗余代码,同时在项目后期维护中,如果元素定位或功能模块发生变化,只需要调整页面元素或功能模块封装的代码即可,大大提高了用例的可维护性。而测试用例根据页面封装的方法而生成,提高了用例的可读性。PO 模型具有很强的扩展性。根据不同类型对项目成员进行分类。比如树结构功能操作,好多页面存在。此时就不单单限于以页面结构为class 进行封装,可以将树结构功能提出来单独封装,在每个页面中使用。灵活度高,也可提高代码的复用。

1. 基础页面

作为基础页面类,所有的页面都会继承该类,需要封装selenium 的常用方法例
如:元素定位、时间等待等。还可以将常用的一些方法封装在内,例如打开浏
览器默认进入的页面、菜单操作等。
在test/pages 下新建basePage.py 文件。
在这里插入图片描述

元素定位:ID,class,name,tag,xpath,limnk,partial link,css
对象操作:click,send_keys,clear,submit,text,get_attribute,is_display,isEnable
时间等待:强制等待:sleep
隐式等待:implicitly_wait(time),driver.find_element_by_id(‘id’) .click()driver 在执行find_element_by_id(‘id’)过程中如果找到元素就会立即执行下一个动作click,不会完全等够10 秒后再执行下一个动作。如果超过10 秒还没有找到该元素则抛出未能定位到该元素的错误。
显式等待:WebDriverWait(driver, time);WebDriverWait(driver, time):一般会和until()和until_not()方法配合使用。例如WebDriverWait(driver, time).until(),程序执行时会对until 中的返回结果进行判
断从而决定是否进行下一步。如果返回结果为True 则进行下一步操作,如果返回结果为False 则会不断的去判断until 中的返回结果直至超过设置的等待时间,然后抛出异常。WebDriverWait(driver, time).until_not() 与WebDriverWait(driver, time).until()的判定结果相反。WebDriverWait(driver, time).until_not()执行时如果until_not 中返回结果为False 则执行下一步,反之不断的去判断until_not 中的返回结果。使用WebDriverWait 方法时需要先导入WebDriverWait:from selenium.webdriver.support.ui import WebDriverWait。
until 中的判断通常通过expected_conditions 类中的方法进行判断。expected_conditions 类中的方法返回结果是布尔值。使用时就需要导入:from selenium.webdriver.support import expected_conditions。

unittest

unittest 是Python 自带的单元测试框架,在自动化测试框架中被用来组织测试用例的执行、断言和日志记录。
unittest 工作原理:
① 获得测试用例 TestCase。
② TestLoader 将测试用例TestCase 加载进TestSuite。
欢迎关注泰楠个⼈人博客:https://www.cnblogs.com/tynam
selenium-python-tynam
94
③ TextTestRunner 执行run()方法。执行TestCase 中以test 开头的方
法。
④ 生成测试报告TestResult。
如果一个类继承 unittest.TestCase,那么这个类就是一个测试用例。在这个测试类中,如果一个方法要被当作测试用例执行则这个方法的名称就必须以test 开头。在unittest 框架中只会将test 开头的方法当作测试用例执行。例:写一个类继承 unittest.TestCase。类中有两个方法,一个以test 开头,一个非test 开头。
setUp():测试用例执行前准备工作,执行每个测试用例的前置条件。如测试用例的前置条件是已经登录系统,则可以在setUp()中登录系统。
tearDown():测试用例执行完成后善后工作,执行每个测试用例的后置条件。如测试用例的后置条件是退出登录系统,则可以在tearDown()中退出系统。
setUpClass():结合@classmethod 装饰器一起使用,是所有测试用例执行的前置条件。
tearDownClass():结合@classmethod 装饰器一起使用,是所有测试用例执行的后置条件。
例:简单的使用setUp()、tearDown()、setUpClass()和tearDownClass()。
在这里插入图片描述
五、TestSuit
TestSuite:测试套件,用来组织多个测试用例。也可以是将多个测试套件组织
在一起。可以通过unittest.TestSuite()类直接构建,也可以通过TestSuite 实
例的addTest、addTests 方法构建。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值