自动化测试,一般分三个步骤:
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 | 等待检验某元素的存在。为真时,则执行 |
验证和断言的区别:验证失败后不影响脚本的继续执行,断言失败后将停止脚本的执行。
异常类型
异常 | 解释 |
---|---|
AssertionError | assert语句失败 |
AttributeError | 试图访问一个对象没有的属性 |
IOError | 输入输出异常,基本是无法打开文件 |
ImportError | 无法引入模块或者包,基本是路径问题 |
IndentationError | 语法错误,代码没有正确的对齐 |
IndexError | 下标索引超出序列边界 |
KeyError | 试图访问字典里不存在的键 |
KeyboadrInterrupt | :Ctrl+c被按下 |
NameError | 使用一个还未赋值对象的变量 |
SyntaxError | python代码逻辑语法错误,不能执行 |
KeyError | 传入的对象类型与要求不符 |
KeyError | 试图访问一个还未设置的全局变量,基本上是由于另有一个同名的全局变量,导致你以为在访问 |
KeyError | 传入一个不被期望的值,即使类型正确 |
常用的unittest断言如下
-
相等断言:assertEqual(self, first, second, msg=None) 常用于title和url的对比来检查是否与预期结果一致;
self.assertEqual(u'用户 - Delicate Cloud Dashboard', driver.title, 'switch to Admin_Identity_User panel fail')
-
不等断言:assertNotEqual(self, first, second, msg=None)
与1相反,此断言不常用;** -
True断言:assertTrue(self, expr, msg=None)
此断言可用于对寻找某元素的表达式进行判断,如返回True则通过,否则Fail; -
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的一个实例,不是则测试用例通过 |