(三十四)什么是自动化测试模型之模块化驱动测试实例
随笔记录方便自己和同路人查阅。
#------------------------------------------------我是可耻的分割线-------------------------------------------
学习selenium自动化之前,最好先学习HTML、CSS、JavaScript等知识,有助于理解定位及操作元素的原理。关于python和selenium安装请自行搜索别的资料,这里就不多做介绍了,所有例子均使用python3.6+selenium执行的。
#------------------------------------------------我是可耻的分割线-------------------------------------------
通过对自动化测试模型的介绍,我们了解了模块化设计的有点。本篇文章我们就以具体的例子来介绍模块的具体应用,当然,使用它的基础是Python语言中函数与类方法的调用。下面以126邮箱为例。
from selenium import webdriver driver = webdriver.Chrome() driver.implicitly_wait(10) driver.get("http://www.126.com") #登录 driver.find_element_by_id('idInput').clear() driver.find_element_by_id('idInput').send_keys('username') driver.find_element_by_id('pwdInput').clear() driver.find_element_by_id('pwdInput').send_keys('password') driver.find_element_by_id('loginBtn').click() #收信、写信、删除信件等操作 #... #退出 driver.find_element_by_link_text('退出').click() driver.quit()
从126邮箱业务浏览分析,邮箱所提供的功能都需要登录之后进行,例如收信、写信、删除信件等擦欧总。对于手工来说测试人员在执行用例的过程中可以一次登录后验证多个功能在退出,但自动化测试的执行有别于手工测试的执行,需要保持测试用例的独立性和完整性,所以每一条用例在执行时都需要登录和退出操作。这个时候就可以把登录和退出的操作封装为公共函数。当每一条用例需要登录/退出时,只需要调用它们即可,从而消除代码重复,提高脚本的可维护性。
下面对登录和退出进行模块封装。
from selenium import webdriver #登录 def login(): driver.find_element_by_id('idInput').clear() driver.find_element_by_id('idInput').send_keys('username') driver.find_element_by_id('pwdInput').clear() driver.find_element_by_id('pwdInput').send_keys('password') driver.find_element_by_id('loginBtn').click() #退出 def logout(): driver.find_element_by_link_text('退出').click() driver.quit() driver = webdriver.Chrome() driver.implicitly_wait(10) driver.get("http://www.126.com") login()#调用登录模块 #收信、写信、删除信件等操作 #... logout()#调用退出模块
现在将登录的操作步骤封装到login()函数中,把退出的操作封装到logout()函数中,对于用例本身只需要调用这个函数即可,可以把更多的注意力放到用例本身的操作步骤中。
当然,如果只是把操作步骤封装成函数并没简单太多,我们需要将其放到单独的脚本文件中供其他用例调用。
新建一个python文件public.py
from selenium import webdriver class Login(): #登录 def user_login(self,driver): driver.find_element_by_id('idInput').clear() driver.find_element_by_id('idInput').send_keys('username') driver.find_element_by_id('pwdInput').clear() driver.find_element_by_id('pwdInput').send_keys('password') driver.find_element_by_id('loginBtn').click() #退出 def user_logout(self,driver): driver.find_element_by_link_text('退出').click() driver.quit()
当函数被独立到单独的脚本文件中时做了一点调整,主要是为函数增加了浏览器驱动的入参。因为函数实现的操作需要通过浏览器驱动driver,driver需要通过具体调用的用例给定。
测试用例文件mailTest.py
from selenium import webdriver from public import Login driver = webdriver.Chrome() driver.implicitly_wait(10) driver.get("http://www.126.com") Login().user_login()#调用登录模块 #收信、写信、删除信件等操作 #... Login().user_logout()#调用退出模块
首先,需要导入当前目录下public.py文件中的login()类,在需要的位置调用类中的user_login()和user_logout()函数。这样对于每个用例的编写与维护就方便了很多。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异