今年高考作文火出圈了。

“妙手、俗手、本手” 本为围棋里面的概念。

  • 本手:是指合乎棋理的正规下法。
  • 妙手: 是指出人意料的精妙下法。
  • 俗手:是指貌似合理,实际上是错误的。

当然,我不会下围棋,在写自动化测试的过程中,我经常遇到俗手本手妙手的写法。接下来,就和大家探讨一下。

俗手写法

import time
import unittest
from selenium import webdriver
from selenium.webdriver.common.by import Byclass TestSample(unittest.TestCase):def test_case(self):dr = webdriver.Chrome()try:dr.get("https://cn.bing.com/")dr.find_element(By.ID, "sb_form_q").send_keys("selenium")dr.find_element(By.ID, "sb_form_q11").submit()time.sleep(2)except BaseException as msg:print("报错信息: %s" %msg)finally:dr.quit()if __name__ == '__main__':unittest.main()

我经常看到有测试在写用例的时候喜欢用 try...except... , 上面的代码,把可能定位不到的元素操作try起来,万一出错了就捕捉到错误信息,最终 finally 还对打开的浏览器进行了关闭处理。看似很合理对吧!?

假设,修改元素定位,报错信息如下:

报错信息:Message: no such element: Unable to locate element: {"method":"css selector","selector":"[id="sb_form_q11"]"}.
----------------------------------------------------------------------
Ran 1 test in 4.914sOK

请问:这条用例成功了还是失败了?如果说成功了,明明打印了“报错信息”;如果说失败了,结果却显示“Ok”。

本手写法

# ...class TestSample(unittest.TestCase):def setUp(self) -> None:self.dr = webdriver.Chrome()def test_case(self):dr = self.drdr.get("https://cn.bing.com/")dr.find_element(By.ID, "sb_form_q").send_keys("selenium")dr.find_element(By.ID, "sb_form_q11").submit()time.sleep(2)def tearDown(self) -> None:self.dr.quit()if __name__ == '__main__':unittest.main()

去掉不必要的异常捕捉,合理地使用setUp/tearDown,再次运行测试。

E
======================================================================
ERROR: test_case (__main__.TestSample)
----------------------------------------------------------------------
Traceback (most recent call last):File ".\demo.py", line 31, in test_casedr.find_element(By.ID, "sb_form_q11").submit()File "C:\Python38\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 1244, in find_elementreturn self.execute(Command.FIND_ELEMENT, {File "C:\Python38\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 424, in executeself.error_handler.check_response(response)File "C:\Python38\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 247, in check_responseraise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"[id="sb_form_q11"]"}...----------------------------------------------------------------------
Ran 1 test in 4.826sFAILED (errors=1)

报错信息很吓人吗?丰富的报错信息有助于你定位问题!

File ".\demo.py", line 31

哪个文件哪一个行代码。

dr.find_element(By.ID, "sb_form_q11").submit()

具体报错的代码是什么。

NoSuchElementException

异常的类型,异常类型有助于锁定问题。就像医院的医导一样,你说肚子疼,他马上知道你应该去挂哪个科室。有经验的程序员只看错误类型就知道问题出在哪里了,都不用看具体报错信息。

Message: no such element: Unable to locate element: {"method":"css selector","selector":"[id="sb_form_q11"]"}

具体的报错信息,他会告诉你为什么出错了。

FAILED (errors=1)

用例的统计结果是对的,确实有一条用例错误。

tearDown()

tearDown() 默默地执行了浏览器关闭动作。

所以,你为什么要在用例里面加异常捕捉?你到底想隐瞒什么?是自我的欺骗?还是来自领导的压力?

妙手写法

# ...def bing_search(dr, keyword):"""搜索封装"""dr.find_element(By.ID, "sb_form_q").send_keys(keyword)dr.find_element(By.ID, "sb_form_q11").submit()time.sleep(2)class TestSample(unittest.TestCase):def setUp(self) -> None:self.dr = webdriver.Chrome()def test_case(self):dr = self.drdr.get("https://cn.bing.com/")bing_search(dr, "selenium")def tearDown(self) -> None:self.dr.quit()if __name__ == '__main__':unittest.main()

妙手的写法自然是做好合理的封装,当然这里的技巧包括不限于于 PO 设计模式数据驱动等,以往的文章做了大量的讨论这里就不展开了。

最后,

我们时常能听到 人生如棋,工作也好,写代码也好,都会经历俗手->本手 -> 妙手, 一开始写代码,因为缺乏经验,往往从自己的认为是合理的方式编写,当然,往往容易踩坑,这即为俗手;随着经验的不断积累,总结出了一些经验就会按照常规方式编写代码,这即为本手;随着经验的不断积累,偶得一些设计模式、语法糖等,这即为妙手。

当然了,程序员不管什么手,最终的归宿都是外卖骑手。

点击下面卡片关注本博主个人公众号可以获取更多技术干货,包括自动化测试学习资料,知识体系大纲,40篇面试经验文章和项目案例源码、笔记等等资料。具体详细内容可自行查看哦!

软件测试(测试用例)编写之俗手、本手、妙手相关推荐

  1. 软件测试测试用例编写_不要先编写所有软件测试-只需编写一个

    软件测试测试用例编写 Test Driven Development (TDD) is sometimes described as "writing tests first". ...

  2. 软件测试测试用例编写 不超过7步骤_教你快速编写一个合格的测试用例!

    关于测试用例,可能测试人员会思考很多问题,例如: 测试周期紧张,能否不写用例直接开始测试? 测试用例是否需要按照一定的模板编写? 测试场景太多,是否每个流程都需要设计测试用例? 测试用例是否有exce ...

  3. 客户成功的「本手、俗手、妙手」

    最近,2022 年高考语文全国卷的作文题又在网上火了一把: 「本手.俗手.妙手」是围棋的三个术语.本手是指合乎棋理的正规下法:俗手是指貌似合理,而从全局看通常会受损的下法:妙手是指出人意料的精妙下法. ...

  4. 软件测试黑盒用例文档,看完这篇黑盒测试用例编写教程,我豁然开朗

    测试用例编写是软件测试的基本技能:也有很多人认为测试用例是软件测试的核心:软件测试中最重要的是设计和生成有效的测试用例:测试用例是测试工作的指导,是软件测试的必须遵守的准则. 在这里我们不讨论以上的各 ...

  5. 【软件测试】测试大纲法——测试用例编写

    前言 作为软件开发过程中一个非常重要的环节,软件测试越来越成为软件开发商和用户关注的焦点.完善的测试是软件质量的保证,因此软件测试就成了一项重要而艰巨的工作.要做好这项工作当然也绝非易事. 大家测试过 ...

  6. 本手妙手俗手为主题写一篇不少于800字的作文

    我们生活在一个技术发达的时代,科技的发展给我们带来了许多便利.但是,本手妙手俗手的精髓依然不可缺少.本手妙手俗手,字面上的意思就是以本领和技能来解决问题,而不是依赖外部技术和机械.这种方式的优势在于可 ...

  7. 力扣1089 的本手妙手俗手

    力扣1089 的本手妙手俗手 题目 给你一个长度固定的整数数组 arr,请你将该数组中出现的每个零都复写一遍,并将其余的元素向右平移.注意:请不要在超过该数组长度的位置写入元素.要求:请对输入的数组 ...

  8. 【软件测试系列三】《测试用例编写原则与设计方法》

    1. ​​概述 ​​​ ​​1.1. 目的 ​​​ ​​1.2. 使用范围 ​​​ ​​2. 测试用例编写原则 ​​​ ​​2.1. 系统性 ​​​ ​​2.2. 连贯性 ​​​ ​​2.3. 全面性 ...

  9. 公司测试员用例写得乱七八糟,测试总监制定了这份《测试用例编写规范》

    统一测试用例编写的规范,为测试设计人员提供测试用例编写的指导,提高编写的测试用例的可读性,可执行性.合理性.为测试执行人员更好执行测试,提高测试效率,最终提高公司整个产品的质量. 一.范围 适用于集成 ...

最新文章

  1. win2008 mysql优化_SQL server 2008 数据库优化常用脚本
  2. 第16/24周 SQL Server 2014中的基数计算
  3. LeetCode 456. 132模式(逆序遍历+单调栈)
  4. 如何参悟Java的三大框架
  5. vb实时错误6 溢出_java内存溢出系列(6): Out of swap space?
  6. 【报告分享】百度大脑AI技术成果白皮书2018-2019.pdf
  7. 通达信公式-涨幅限制
  8. treeview 失去焦点时触发_33岁进央视,40岁主持《焦点访谈》的敬一丹,什么成就了她?...
  9. 项目中的设计模式【工厂方法模式】
  10. WinPE启动U盘工具箱 (通用PE工具箱ISO映像文件)
  11. .net之PDF合并(直接拼接,不改变尺寸和样式)
  12. 2021华为悦盒EC6110-T-M-拆机-强刷固件及教程
  13. 最新版AWVS14.3.2下载安装教程(2021.6.17版本)
  14. python实现火车票查询_Python 实现火车票查询工具
  15. Number of unique ways that ATM can tender
  16. 幽默感也有套路:可用数学模型量化
  17. ZXing实现横竖屏扫描切换
  18. Win7如何显示/隐藏Administrator账号
  19. [F2F] Java基础 (JDK特性/集合/IO/锁)
  20. 个人申请微信支付接口教程(免签约支付)

热门文章

  1. Java对HTTP2的支持
  2. 【android UI学习】LinearGradient实现歌词滚动
  3. 2019年各大顶会神经关系抽取(NRE)优质论文整理分享
  4. c语言二维数组中行指针,C中二维数组中行的平均值?
  5. [IPhone] 第一个iphone游戏(Bingo Fight)上市了
  6. 量子计算机对电子商务,“量子产品”系虚假宣传 为何仍能在电商平台销售?...
  7. c语言猜字谜(详解)(后附完整源码)
  8. LWN:9月份LPC上关于folio的一次讨论!
  9. Karakurt:一个新型数据盗窃和勒索的黑客组织
  10. Web开发之数据库总结