一.python的异常处理

异常抛出处理机制:

1.若在运行时发生异常,解释器会查找相应的处理语句(handler)

2.若在当前函数无法找到,就将异常传给上层的调用函数,看是否能处理

3.如果在最外层(全局“main")中还是无法找到时,解释器退出,并打印出 traceback让用户找出错原因

try...except   异常捕捉,用except接收了这个IOError,pass代表实现了相应实现,什么也不做

#coding=utf-8

# except接收错误,不报错,pass代表实现了相应实现,什么也不做
try:
open("ddd.txt","r")
except IOError:
pass #msg用来打印except接收的NameError的错误,此时会打印出:name is not defined!
try:
print aa
except NameError,msg:
print msg #指定AssertionError的抛出错误为msg,如果出错,则报出:”num is not 10 !"
try:
num=input("inout a num:")
assert (num==10),"num is not 10"
except AssertionError,msg:
print msg
print ("Sadly,num not 10!!")

try...finally 无论错误是不是发生,这些代码必须运行,比如:文件关闭,释放锁,把数据库连接返回给连接池

import time

try:
f=file("data.txt")
while True:
line=f.readline()
if len(line)==0:
break
time.sleep(2)
print line
finally:
f.close()
print 'Cleaning up...closed the file'

正常情况下运行结果如下:

>>>
你说的啥 selenium go die WFU appium
Cleaning up...closed the file

在运行途中按 ctrl+C终止键,文件仍然执行finally下的语句:

>>>
你说的啥 selenium Cleaning up...closed the file Traceback (most recent call last):
File "C:\Users\DELL\Desktop\test.py", line 9, in <module>
time.sleep(2)
KeyboardInterrupt

 二.错误截图

在异常抛出中使用 get_screenshot_as_file(“保存的截图路径”)即可得到异常截图

# coding =utf-8
from selenium import webdriver browser=webdriver.Chrome()
browser.get("http://www.baidu.com") try:
browser.find_element_by_id("kw1").sendkeys("selenium")
browser.find_element_by_id("su").click()
except:
browser.get_screenshot_as_file("D:/error.png")

三.自动化测试用例设计

自动化测试用例设计的原则:

1.一个脚本是一个完整的场景,包括登录,退出和关闭。

2.一个脚本只验证一个一个功能点,如登录功能脚本完毕后,验证发消息时虽然需要登录退出,但是只验证发消息这个功能点,不能太多

3.尽量只做正向逻辑的验证,怎么可以正确走通怎么来,考虑太多逆向,一方面场景过多,另一方面验证性不强,一般手工多用逆向思维,而且由于多用于回归性测试,考虑正向就好

4.脚本之间依赖性不能太强,要各自独立

5.如果数据做了修改,要进行数据还原,例如:修改完密码后,需要把密码重新改回去,否则导致下次不能使用,可重用性太弱

6.只对验证点进行验证,不要每个都验证

自动化测试案例一般用表格记录

重要的是验证点的设计,比如:用登录后的昵称验证是否登录成功,用文件的数量判断是否添加文件成功(不用恢复数据),用文件的数量判断是否删除成功(记得要恢复数据!!!)

比如:对于公司的系统微信管理平台而言:

登录:验证登录后的昵称

添加文件:验证新插入的第一行第一列标题是否是新增的内容

删除文件:验证删除后,下行的标题显示是否正确

修改:修改后的内容显示是否正确

查询:显示的内容数量是否正确

由简到繁,逐步增加功能点,即使实现了部分的自动化,但是半自动化可以使更多的注意点到探索性测试和用户体验方面。

python实例编写(5)--异常处理,截图,用例设计的更多相关文章

  1. python实例编写(6)--引入unittest测试框架,构造测试集批量测试(以微信统一管理平台为例)

    ---恢复内容开始--- 一.python单元测试实例介绍 unittest框架又叫PyUnit框架,是python的单元测试框架. 先介绍一个普通的单元测试(不用unittest框架)的实例: 首先 ...

  2. python实例编写(7)---测试报告与测试套件(多个py文件,1个py文件内多个用例)

    一.  一个.py文件批量执行测试用例(一个.py文件下多个用例执行) 如果直接使用:unittest.main(),则按字母顺序执行, 对于前后之间又依赖关系的用例,需要按特定的顺序执行,则使用 s ...

  3. python实例编写(1)--浏览器操作,元素操作

    一.浏览器操作 1.  back()与 forward() #coding=gbk //编码不一定是utf-8 from selenium import webdriver //导入包,也叫”模组“ ...

  4. python实例编写(2)--等待,一组对象,层级元素,frame对象处理

    一.设置等待 #coding=utf-8 from selenium import webdriver from selenium.webdriver.support.ui import WebDri ...

  5. python实例编写(3)--对话框,多窗口,下拉框,上传文件

    一.对话框: 例:点击百度的登录,弹出的小窗口 #coding=utf-8 from selenium import webdriver from time import sleep dr=webdr ...

  6. python实例编写(4)--js,滚动条,cookie,验证码,获取特定属性的元素,实现原理

    一.调用js 执行方法:execute_script(script,*args) 场景一:在页面上直接执行调用js 场景二:在定位的某个元素上执行调用js 如:掩藏文字(提示插件 tooltip设置淡 ...

  7. Enum与最佳単例设计

    1 枚举基础 自定义一个枚举类很简单, 不过类型关键字是 enum, 不是 class, 也不是 interface.public enum Action { UP, DOWN, LEFT, RIGH ...

  8. Python实例:贪吃蛇(简单贪吃蛇编写)🐍

    d=====( ̄▽ ̄*)b 叮~ Python -- 简易贪吃蛇实现 目录: 1.基本原理 2.需要学习的库 3.代码实现 1.基本原理 基本贪吃蛇所需要的东西其实很少,只需要有一块让蛇动的屏幕, 在 ...

  9. Python 内编写类的各种技巧和方法

    Python 内编写类的各种技巧和方法 简介 有关 Python 内编写类的各种技巧和方法(构建和初始化.重载操作符.类描述.属性访问控制.自定义序列.反射机制.可调用对象.上下文管理.构建描述符对象 ...

随机推荐

  1. 解决打包时出现的Failed to verify bitcode

    今天给一个老项目打包在导出包的时候报错,可能是因为xcode升级造成的 Failed to verify bitcode in Fuzi.framework/Fuzi: error: Bundle o ...

  2. centos7破解mariadb密码

    第一步,停止运行mysql: systemctl stop mariadb.service 第二步,使用" -skip-grant-tables"参数重新启动mysql: mysq ...

  3. 【Ubuntu16.04】 install nginx

    1. Download PGP key in order to pass the authentication of the nginx repository signature. click to ...

  4. 【Spring 核心】装配Bean(一) 自动化装配

    Spring从两个角度实现自动化装配:组件扫描 (Spring自动发现应用上下文中所创建的bean)自动装配(autowiring)自动满足bean之间的依赖 组件扫描: package test.s ...

  5. Xcode修改包名(含cocopods)

    由于需要现在要更改包名,但是在网上找了N多资料都比较老,16年的资料却是残缺不全,尤其 ios10 出了 .entitlement  的机制 ,很多琐碎的小细节 很容易忘记.所以我自己总结了一篇. 注 ...

  6. SpringMVC参数绑定(从请求中接受参数)

    参数绑定(从请求中接收参数) 1)默认类型: 在controller方法中可以有也可以没有,看自己需求随意添加. httpservletRqeust,httpServletResponse,httpS ...

  7. class对象详解

    我们知道,对于java语言,我们一般先写一个类对象,表示对某一类对象概述,其中包括属性,方法等.我们在对类对象编译时,会产生一个.class对象,jvm在加载类对象时,是加载.class 对象文件,我 ...

  8. HTTPS 证书配置

    HTTPS 证书配置 现在阿里云和腾讯云都支持申请 HTTPS 证书,这里不再提,有需要的可自行google解决方案. 本文主要介绍的是通过 letsencrypt 申请免费的HTTPS证书,并将其配 ...

  9. windows 计划任务执行python脚本

    1.  查找并打开Windows计划任务 2. 创建任务 3. 输入名称 4. 通过触发器设置运行时间或周期 5. 通过操作,设置运行的脚本 a. 操作选择'启动程序' b. 程序或脚本选择 pyth ...

  10. split添加limit参数

    String str = "I love you"; /**这里被分割为I 和love you**/ String[] spiltStr = str.spit(" &qu ...