自动化测试,一般分三个步骤:

1)设定基础数据,如网址;

2)通过元素定位的方式操作系统;

3)通过对某一操作的预期数据和实际数据比较,判断测试结果;

常用于断言的三种模式

断言被用于三种模式: assert 、verify、waitfor
Assert 失败时,该测试将终止。
Verify 失败时,该测试将继续执行,并将错误记入日显示屏 。也就是说允许此单个 验证通过。确保应用程序在正确的页面上。
Waitfor用于等待某些条件变为真。可用于AJAX应用程序的测试。如果该条件为真,他们将立即成功执行。如果该条件不为真,则将失败并暂停测试。直到超过当前所设定的超时时间。 一般跟setTimeout时间一起用

常用的断言有

断言作用
assertLocation判断当前是在正确的页面
assertTitle检查当前页面的title是否正确
assertValue检查input的值, checkbox或radio,有值为”on”无为”off”
assertSelected检查select的下拉菜单中选中是否正确
assertSelectedOptions检查下拉菜单中的选项的是否正确
assertText检查指定元素的文本
assertTextPresent检查在当前给用户显示的页面上是否有出现指定的文本
assertTextNotPresent检查在当前给用户显示的页面上是否没有出现指定的文本
assertAttribute检查当前指定元素的属性的值
assertTable检查table里的某个cell中的值
assertEditable检查指定的input是否可以编辑
assertNotEditable检查指定的input是否不可以编辑
assertAlert检查是否有产生带指定message的alert对话框
verifyTitle检查预期的页面标题
verifyTextPresent验证预期的文本是否在页面上的某个位置
verifyElementPresent验证预期的UI元素,它的HTML标签的定义,是否在当前网页上
verifyText核实预期的文本和相应的HTML标签是否都存在于页面上
verifyTable验证表的预期内容
waitForPageToLoad暂停执行,直到预期的新的页面加载
waitForElementPresent等待检验某元素的存在。为真时,则执行

验证和断言的区别:验证失败后不影响脚本的继续执行,断言失败后将停止脚本的执行。

异常类型

异常解释
AssertionErrorassert语句失败
AttributeError试图访问一个对象没有的属性
IOError输入输出异常,基本是无法打开文件
ImportError无法引入模块或者包,基本是路径问题
IndentationError语法错误,代码没有正确的对齐
IndexError下标索引超出序列边界
KeyError试图访问字典里不存在的键
KeyboadrInterrupt:Ctrl+c被按下
NameError使用一个还未赋值对象的变量
SyntaxErrorpython代码逻辑语法错误,不能执行
KeyError传入的对象类型与要求不符
KeyError试图访问一个还未设置的全局变量,基本上是由于另有一个同名的全局变量,导致你以为在访问
KeyError传入一个不被期望的值,即使类型正确

常用的unittest断言如下

  1. 相等断言:assertEqual(self, first, second, msg=None)  常用于title和url的对比来检查是否与预期结果一致;

     self.assertEqual(u'用户 - Delicate Cloud Dashboard', driver.title, 'switch to Admin_Identity_User panel fail')
    
  2. 不等断言:assertNotEqual(self, first, second, msg=None)
    与1相反,此断言不常用;**

  3. True断言:assertTrue(self, expr, msg=None)
    此断言可用于对寻找某元素的表达式进行判断,如返回True则通过,否则Fail;

  4. False断言:assertFalse(self, expr, msg=None)
    此断言可用于对寻找某元素的表达式进行判断,如返回False则通过,否则Fail;

     和4可以配合使用selenium IDE所生成的[Python](http://lib.csdn.net/base/python "Python知识库")脚本中is_element_present和is_alert_present来使用;
    
异常解释
assertEqual(a, b,msg = '测试失败时打印的信息')断言a和b是否相等,相等则测试用例通过
assertNotEqual(a, b,msg = '测试失败时打印的信息')断言a和b是否相等,不相等则测试用例通过
assertTrue(x,msg = '测试失败时打印的信息')断言x是否True,是True则测试用例通过
assertFalse(x,msg = '测试失败时打印的信息')断言x是否False,是False则测试用例通过
assertIs(a, b,msg = '测试失败时打印的信息')断言a是否是b,是则测试用例通过
assertNotIs(a, b,msg = '测试失败时打印的信息')断言a是否是b,不是则测试用例通过
assertIsNone(x,msg = '测试失败时打印的信息')断言x是否None,是None则测试用例通过
assertIsNotNone(x,msg = '测试失败时打印的信息')断言x是否None,不是None则测试用例通过
assertIn(a, b,msg = '测试失败时打印的信息')断言a是否在b中,在b中则测试用例通过
assertNotIn(a, b,msg = '测试失败时打印的信息')断言a是否在b中,不在b中则测试用例通过
assertIsInstance(a, b,msg = '测试失败时打印的信息')断言a是是b的一个实例,是则测试用例通过
assertNotIsInstance(a, b,msg = '测试失败时打印的信息')断言a是是b的一个实例,不是则测试用例通过