python实例编写(5)--异常处理,截图,用例设计

一.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.只对验证点进行验证,不要每个都验证

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

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

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

登录:验证登录后的昵称

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

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

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

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

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

时间: 2024-08-04 12:05:46

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

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

一.  一个.py文件批量执行测试用例(一个.py文件下多个用例执行) 如果直接使用:unittest.main(),则按字母顺序执行, 对于前后之间又依赖关系的用例,需要按特定的顺序执行,则使用 suite.addTest(类名("方法名")),如这里按照新增,修改,删除的顺序,可以避免执行完毕后的测试数据处理. def test_modifyCategory(self): ... def test_addCategory(self): ... def test_delCategor

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

一.设置等待 #coding=utf-8 from selenium import webdriver from selenium.webdriver.support.ui import WebDriverWait from time import sleep driver=webdriver.Chrome() driver.get('http://www.baidu.com') #添加智能等待 driver.implicitly_wait(3) driver.find_element_by_i

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

一.对话框: 例:点击百度的登录,弹出的小窗口 #coding=utf-8 from selenium import webdriver from time import sleep dr=webdriver.Chrome() dr.get("http://www.baidu.com") #一定要记得设置等待时间,要不然定位不到!!! dr.find_element_by_link_text("登录").click() sleep(3) #思路:二次定位,点击登录后

Java设计模式中的单例设计

/** * 单例设计模式 * 应用场合:只需要一个对象的 * 作用:保证整个应用程序中某个实例有且只有一个 * 类型有:饿汉模式.懒汉模式 * 下面的例子是一个饿汉模式的例子 */ class SingleDemo { // 1.将构造方法私有化,不允许外部直接创建使用 private SingleDemo() {} // 2.创建类的唯一实例,使用private static修饰 private static SingleDemo instance = new SingleDemo(); //

Enum与最佳単例设计

1 枚举基础 自定义一个枚举类很简单, 不过类型关键字是 enum, 不是 class, 也不是 interface.public enum Action { UP, DOWN, LEFT, RIGHT} 自定义的 Action枚举 本质上还是一个 class, 反编译可以看到如下定义:public final class Action extends Enum {...} enum关键字 定义了特殊的类, 继承 java.lang.Enum, 由编译程序处理, 我们直接写类继承 Enum类 会

Python :编写条件分支代码的技巧

『Python 工匠』是什么? 我一直觉得编程某种意义是一门『手艺』,因为优雅而高效的代码,就如同完美的手工艺品一样让人赏心悦目. 在雕琢代码的过程中,有大工程:比如应该用什么架构.哪种设计模式.也有更多的小细节,比如何时使用异常(Exceptions).或怎么给变量起名.那些真正优秀的代码,正是由无数优秀的细节造就的. 序言 编写条件分支代码是编码过程中不可或缺的一部分. 如果用道路来做比喻,现实世界中的代码从来都不是一条笔直的高速公路,而更像是由无数个岔路口组成的某个市区地图.我们编码者就像

Effective Python之编写高质量Python代码的59个有效方法

                                                     这个周末断断续续的阅读完了<Effective Python之编写高质量Python代码的59个有效方法>,感觉还不错,具有很大的指导价值.下面将以最简单的方式记录这59条建议,并在大部分建议后面加上了说明和示例,文章篇幅大,请您提前备好瓜子和啤酒! 1. 用Pythonic方式思考 第一条:确认自己使用的Python版本 (1)有两个版本的python处于活跃状态,python2和pyt

【转载】python实例手册

今天西爬虫的时候遇到了问题,在网上不停地查找资料,居然碰到两篇好文章: 1.python实例手册   作者:没头脑的土豆 另一篇在这:shell实例手册 python实例手册 #encoding:utf8 # 设定编码-支持中文 0说明 手册制作: 雪松 更新日期: 2013-12-19 欢迎系统运维加入Q群: 198173206 # 加群请回答问题 请使用"notepad++"打开此文档,"alt+0"将函数折叠后方便查阅 请勿删除信息,转载请说明出处,抵制不道德

Python之编写函数

Python之编写函数 在Python中,定义一个函数要使用 def 语句,依次写出函数名.括号.括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用 return 语句返回. 我们以自定义一个求绝对值的 my_abs 函数为例: def my_abs(x): if x >= 0: return x else: return -x 请注意,函数体内部的语句在执行时,一旦执行到return时,函数就执行完毕,并将结果返回.因此,函数内部通过条件判断和循环可以实现非常复杂的逻辑. 如果没