自动化测试:操作自动化测如何实现用例设计实例

在编写用例之间,笔者再次强调几点编写自动化测试用例的原则:

1、一个脚本是一个完整的场景,从用户登陆操作到用户退出系统关闭浏览器。
2、一个脚本脚本只验证一个功能点,不要试图用户登陆系统后把所有的功能都进行验证再退出系统
3、尽量只做功能中正向逻辑的验证,不要考虑太多逆向逻辑的验证,逆向逻辑的情况很多(例如手号输错有很多种情况),验证一方面比较复杂,需要编写大量的脚本,另一方面自动化脚本本身比较脆弱,很多非正常的逻辑的验证能力不强。(我们尽量遵循用户正常使用原则编写脚本即可)
4、脚本之间不要产生关联性,也就是说编写的每一个脚本都是独立的,不能依赖或影响其他脚本。
5、如果对数据进行了修改,需要对数据进行还原。
6、在整个脚本中只对验证点进行验证,不要对整个脚本每一步都做验证。

一、登陆用例实例

笔者建议通过excle 表格来编写自动化测试用例。

用例001:

代码示例:

备注:通过匹配用户登录之后的昵称来判断用户是否登录成功。

用例脚本(login.py):

  1. #coding=utf-8

  2. from selenium import webdriver

  3. from selenium.webdriver.common.action_chains import ActionChains

  4. import time

  5. driver = webdriver.Firefox()

  6. driver.get("http://passport.kuaibo.com/login/?referrer=http%3A%2F%2Fwebcloud.kuaibo.com%2F")

  7. driver.maximize_window() #浏览器最大化

  8. #登陆快播私有云

  9. driver.find_element_by_id("user_name").send_keys("testing360")

  10. driver.find_element_by_id("user_pwd").send_keys("198876")

  11. driver.find_element_by_id("dl_an_submit").click()

  12. time.sleep(3)

  13. #获取用户名

  14. now_user=driver.find_element_by_xpath("//div[@id='Nav']/ul/li[4]/a[1]/span").text

  15. #用户名是否等于虫师,不等于将抛出异常

  16. if now_user==u'虫师':

  17. print '登陆成功'

  18. else:

  19. raise NameError('user name error!')

  20. #退出

  21. driver.find_element_by_class_name("Usertool").click()

  22. time.sleep(2)

  23. driver.find_element_by_link_text("退出").click()

  24. time.sleep(2)

  25. driver.close()

二、添加文件用例实例


用例002:

备注:通过计算用户列表中的文件的数量来判断文件是否添加成功。

用例脚本(collect.py):

注:用例登陆与退出参考用例001,本用例只关注收藏用户分享的逻辑代码。#判断当前文件个数

  1. inputs=driver.find_elements_by_tag_name('input')

  2. n=0

  3. for i in inputs:

  4. if i.get_attribute('type')=="checkbox":

  5. n=n+1

  6. print u"当前列表文件为%d" %n

  7. #收藏用户分享文件

  8. driver.find_element_by_class_name("collect").click()

  9. time.sleep(3)

  10. #再次获取当前文件的个数

  11. inputs=driver.find_elements_by_tag_name('input')

  12. ns=0

  13. for ii in inputs:

  14. if ii.get_attribute('type')=="checkbox":

  15. ns=ns+1

  16. print u"当前列表文件为%d" %ns

  17. #判断执行收藏文件之后比收藏之间文件加1 ,否则抛异常

  18. if ns==n+1:

  19. print "ok!"

  20. else:

  21. raise NameError('添加文件失败!!')

三、删除文件实例


用例003:

备注:因为删除了一个文件对文件的数据发生的改变,如果多次执行脚本,列表中的文件被删除完了就会引发异常,所以在删除一个文件后,需要再添加一文件,但添加文件操作不做验证。

用例脚本(del_one_file.py):#判断当前文件个数

  1. inputs=driver.find_elements_by_tag_name('input')

  2. n=0

  3. for i in inputs:

  4. if i.get_attribute('type')=="checkbox":

  5. n=n+1

  6. print u"当前列表文件为%d" %n

  7. #删除操作

  8. driver.find_element_by_xpath("/html/body/div/div[2]/div[2]/div/div[4]/table/tbody/tr/td/input").click()

  9. driver.find_element_by_class_name("dele").click()

  10. driver.find_element_by_xpath("/html/body/div[2]/div[2]/div[2]/div").click()

  11. time.sleep(4)

  12. #再次获取当前文件的个数

  13. inputs=driver.find_elements_by_tag_name('input')

  14. ns=0

  15. for ii in inputs:

  16. if ii.get_attribute('type')=="checkbox":

  17. ns=ns+1

  18. print u"当前列表文件为%d" %ns

  19. #判断执行删除单个文件之后比删除之后文件减1 ,否则抛异常

  20. if ns==n-1:

  21. print "ok!"

  22. else:

  23. raise NameError('删除文件失败!!')

  24. #收藏用户分享单个文件

  25. driver.find_element_by_class_name("collect").click()

  26. time.sleep(3)

四、重命名文件用例实例


用例004:

备注:文件的重命名其实我们很难找到证据(验证点)证明重命名成功,那么脚本整个运行没有报错,我们也可模糊的判断功能测试是OK 的。

用例脚本(renaming.py)

  1. #勾选重命名的文件

  2. driver.find_element_by_xpath("/html/body/div/div[2]/div[2]/div/div[4]/table/tbody[5]/tr/td/input").click()

  3. time.sleep(3)

  4. #鼠标移动到“更多”按钮弹下拉框

  5. element=driver.find_element_by_class_name("more-fe") #定位到“更多”按钮

  6. ActionChains(driver).move_to_element(element).perform() #鼠标移动到“更多”按钮弹下拉框

  7. time.sleep(2)

  8. #在li 标签(更多下拉框)中筛选到data-action==rename(重命名)选项点击

  9. lis=driver.find_elements_by_tag_name('li')

  10. for li in lis:

  11. if li.get_attribute('data-action') == 'rename':

  12. li.click()

  13. time.sleep(2)

  14. 在input 标签中筛选type==text 的重命名输入框

  15. inputs=driver.find_elements_by_tag_name('input')

  16. for input in inputs:

  17. if input.get_attribute('type') == 'text':

  18. input.send_keys(u"新文件名") #进行重名操作

  19. input.send_keys(Keys.ENTER) #回车确认重命名

  20. time.sleep(2)

五、总结

在本章中,简单对比了手工测试用户与自动化测试用例的区别,自动化测试用例编写的原则,如何通过python 捕捉异常和抛出异常,以及webdriver 提供的get_screenshot_as_file()函数,以及如何编写自动化用例与脚本等。

不过先不要急于开始实施自动化测试,虽然我们可以编写单个的测试用例,并通过异常捕捉判断用例是否运行成功。但只有与通过测试框架的整合,我们才能真正有效可行的运用自动化测试技术。

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1205528.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

iPhone 网络调试的过程,请求是否发出,是否经过系统代理,app 绕过代理获取数据

如何做iPhone 网络调试,可以先确认请求走了哪里 这个判断会直接影响后续选用的工具和调试方式。确认请求是否真实存在 调试从一台 iPhone 开始,目标是确认某个 App 的接口请求是否已经发出。 第一步并不依赖任何抓包工具,而是借助系统层面的行…

接口自动化测试一点总结

想要在软件测试这个行业继续前行,就必须拥有核心竞争力,掌握自动化测试技术,是必不可少的一个技能。 在《Google软件测试之道》一书中有介绍到:在Google,70%的自动化测试工作集中于单元测试,20%集中于接口…

Web安全 | EmpireCMS漏洞常见漏洞分析及复现

前言 本文将对EmpireCMS(帝国cms)的漏洞进行分析及复现。代码分析这一块主要还是借鉴了大佬们的一些分析思想,这里对大佬们提供的思路表示衷心的感谢。 环境搭建 帝国cms的默认安装路径为http://localhost/e/install,进入安装一直往下 到连接数据库这…

Chrome 浏览器+Postman做接口测试(全)

如果把测试简单分为两类,那么就是客户端测试和服务端测试。客户端的测试包括UI测试,兼容性测试等,服务端测试包括接口测试。接口测试检查数据的交换,传递和控制管理过程,它绕过了客户端,直接对服务端进行测…

【实操】AI 编程新体验:从 Antigravity 爬虫实战到自动配图生成博文 (本文由Antigravity自动生成)

【实操】AI 编程新体验:从 Antigravity 爬虫实战到自动配图生成博文 (本文由Antigravity自动生成)# AI 编程新体验:从 Antigravity 爬虫实战到自动配图 ## 前言 在上一篇文章中,我分享了如何使用 **Google AI 编程…

【建议收藏】35岁转行网络安全,行业缺口327万,附学习路线和资源

35岁转型搞安全是否还有戏? 放眼现在安全圈 00后的黑客CEO已经出场了 18岁的少年也开始穿梭于微软、谷歌、苹果各大国际公司的安全致谢榜 年轻的黑客们早已登上国际舞台,开始在世界顶级黑客大会上分享议题 40岁,对大多数人来说&#xff…

完整教程:【计算机网络】TCP/IP模型核心层解析(网络/传输/应用层)

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

随手写了个按钮悬停动画,简单但超有质感!

随手写了个按钮悬停动画,简单但超有质感!你好,我是 Silvana,一名前端开发。 这里记录我写过的代码、做过的项目,以及一些真实想法。 这你好,我是 Silvana,一名前端开发。 这里记录我写过的代码、做过的项目,以…

闲置微信立减金套装别浪费!合规回收攻略,94折高效回收指南

移动支付普及的当下,不少人的卡包里都藏着几张被遗忘的微信立减金套装。它们或来自平台兑换、活动领取,或源于好友分享,却常因使用场景受限、规则复杂,或是单纯被搁置,最终默默过期失效。与其让这份福利闲置,不如…

2026年口碑好的矿山施工_矿山监理_矿山设计_环境监理行业内公司推荐

2026年口碑好的矿山施工/矿山监理/矿山设计/环境监理行业内公司推荐2026年,矿山行业迎来绿色化、智能化、精细化转型关键期,石英砂、石灰石、石膏矿等多矿种的合规开发与高效运营需求持续攀升。矿山施工、矿山监理、…

rime 配置简体中文输入法的操作指引 - ryan

本文讲解安装 rime,并配置中文输入法。 最终效果:安装配置步骤 1、下载 rime 下载地址:RIME | 中州韻輸入法引擎 2、下载 rime-ice 到 rime 用户目录 下载地址:Releases iDvel/rime-ice 在输入法图标上点击右键,…

Spring WebFlux 学习

Spring WebFlux 是 Spring Framework 5 引入的响应式(Reactive)Web 框架,用于构建非阻塞、异步、事件驱动的 Web 应用程序。它与传统的基于 Servlet 的 Spring MVC 并行存在,但底层架构完全不同。 一、WebFlux 核心概念 1.1 什么…

【收藏必备】康奈尔论文拆解:AI Agent与Agentic AI本质差异,大模型开发者必看

康奈尔大学最新研究论文精准界定了AI Agent与Agentic AI的核心边界:前者是专注单一任务的“高效执行者”,后者是具备思考规划、多代理协作能力的“智能决策者”。本文深度拆解两种技术的架构逻辑、落地场景、核心挑战及解决方案,帮开发者避开…

收藏这篇!大模型学习全攻略,从小白到高薪工程师的进阶之路

AI大模型是拥有亿级参数的神经网络模型,在自然语言处理、计算机视觉等领域广泛应用。该领域人才需求旺盛,薪资水平高,热门岗位包括模型研发工程师、算法工程师、数据科学家等。文章提供了从基础理论到前沿技术探索的七阶段完整学习路线&#…

C++课后习题训练记录Day76

1.练习项目: 问题描述 请问十六进制数 2021ABCD 对应的十进制是多少? 答案提交 这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。…

从九尾狐AI案例看企业级AI培训的技术架构与落地实践

第一章:AI获客的技术底层逻辑现代AI获客系统本质上是一个基于机器学习的数据驱动决策系统。从技术架构来看,九尾狐AI的企业培训体系构建在三个核心层级上:class AI_Marketing_System:def __init__(self, training_data, business_scenario):s…

深度测评8个AI论文平台,MBA论文写作必备!

深度测评8个AI论文平台,MBA论文写作必备! AI 工具如何重塑论文写作的未来 在当今这个信息爆炸的时代,MBA 学生和科研工作者正面临前所未有的挑战。无论是撰写高质量的论文,还是应对严格的查重要求,传统方法已经难以满…

【效率真相】为什么越来越多的开发者选择点三电商API对接电商平台?

在电商生态日益复杂的今天,一个看似简单的需求——让企业的ERP或WMS系统能够接收和处理多平台的订单——正在成为无数开发团队耗时数月的“黑洞”。传统的对接路径要求开发者逐一入驻各电商开放平台,提交资质、等待审核、研读迥异的接口文档、处理千差万…

2025最新!短视频获客公司综合实力排行榜单揭晓,抖音运营公司/抖音代运营团队/抖音推广/短视频获客短视频获客老牌公司推荐排行榜单

随着短视频平台成为企业营销获客的核心阵地,市场对专业、高效的短视频代运营服务需求持续攀升。面对众多服务商,如何甄别其综合实力与口碑,成为企业决策的关键。本文基于公开市场数据、客户反馈、服务案例及技术创新…

pcre-8.44-2.ky10.x86_64.rpm 安装步骤详解(Kylin V10版)

1. 准备好 rpm 文件 安装包下载:https://pan.quark.cn/s/700d0ef036da ,先确定你已经有 pcre-8.44-2.ky10.x86_64.rpm这个文件,知道它放在哪儿,比如 /home/你的用户名/下载或者 /tmp。 2. 打开终端 用 Ctrl Alt T(…