一.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. JVM(一)JVM的基本结构

    JVM基本结构 一 JVM基本结构示意图 二 JVM结构详解 一 程序计数器 程序计数器是一块较小的内存空间,它是当前线程所执行的字节码的行号指示器,如果线程执行的是一个Java方法,这个计数器记录的 ...

  2. servlet以及HTML中路径问题

    路径问题: ①相对路径和绝对路径: 绝对路径:绝对路径是以/开头的路径! 相对于当前服务器的绝对路径:如果是服务器解析,那么/就代表当前服务器的绝对路径:http://localhost:8080 相 ...

  3. fedora20 安装搜狗输入法及各种问题的解决

    http://blog.csdn.NET/g457499940/article/details/38656719 0 环境描述: 系统环境:Fedora20 64位 截止2014年09月 8日17:5 ...

  4. linux 简易启动脚本

    #/bin/bash pid=`ps -ef | grep 'testDemo' | grep -v grep |awk '{print $2}'` in start) nohup java -j t ...

  5. 【Ubuntu 16】DEB软件包管理

    一.背景介绍 开源软件最早的时候没有软件包和软件包管理器,用户只能下载源码包自行配置 编译 安装. 后来linux各发行版本推出了软件包格式和软件包管理程序 Red Hat.Centos使用RPM格式 ...

  6. Windbg查看调用堆栈(k*)

            无论是分析程序崩溃原因,还是解决程序hang问题,我们最常查看的就是程序调用堆栈.学会windbg调用堆栈命令,以及理解堆栈中的各个参数的意义就显得至关重要. 上图就是一个典型的Win ...

  7. React编写input组件传参共用onChange

    之前写页面上的input比较少,所以没有单提出来一个组件,今天研究了下input组件,但共用一个onChange的问题卡了一会儿,查了下发现几个比较好的方法,分享下: 方法一 Input组件 let ...

  8. 关闭Excel提示文件格式和扩展名不匹配的警告框

    打开某些excel表时,Excel会提示: "a.xls"的文件格式和扩展名不匹配.文件可能已损坏或不安全.除非您信任其来源,否则请勿打开.是否仍要打开它?   在编辑大量的xls ...

  9. Java开源连接池c3p0的基本用法

    前言:其实c3p0只是一个实现了javax.sql 接口 DataSource的一个工具集,使用c3p0可以帮我们管理宝贵的Connection资源,无须我们去创建连接(免去每次配置数据库驱动,url ...

  10. 手把手封装数据层之DButil数据库连接的封装

    最近这段时间一直在用SSM框架做增删改查,突然想把以前还不会用框架的时候,综合百度和各种资料结合API文档抄袭而来的数据层的封装分享给大家.这边先封装一个DButil. 我这个封装就是烂大街的那种,没 ...