unittest框架里的常用断言方法:用于检查数据
1、unittest框架里的常用断言方法:用于检查数据。
(1)assertEqual(x,y) 检查两个参数类型相同并且值相等。
(2)assertTrue(x) 检查唯一的参数值等于True
(3)assertFalse(x) 检查唯一的参数值等于False
(4)assertIn(x,y) 检查x被包含在y里
(5)assertAlmostEqual(x,y,z) 检查指定精度的两个浮点数相等,第三个参数z代表精确到小数点后几位(是可选参数)。
2、selenium中获得界面上的实际数据并检查它们:
(1)获得当前浏览器窗口里的当前网页的标题(self.driver.title)来检查,主要用于检查网页是否跳转到目标页。
示例:
# 检查跳转到标题包含“系统提示”的网页
t1=self.driver.title
self.assertIn("系统提示",t1)
sleep(8)
# 检查自动跳转到标题以“用户中心”开头的网页
t2=self.driver.title
b1=t2.startswith("用户中心")
self.assertTrue(b1)
(2)检查当前浏览器窗口里的当前网页源代码(driver.page_source)里包含某文本,一般用于网页出现时间较短,无法调查元素的定位条件时检查网页里的文本信息。
示例:
# 检查网页源代码里包含“用户名或密码错误”
p1=self.driver.page_source
self.assertIn("用户名或密码错误",p1)
(3)检查指定元素里文本等于某值:定位到元素后,使用元素对象的text属性就可以获得该元素的开始和结束标记之间的文本,然后就可以检查文本是否正确。
示例:
# 检查默认用户名数据是否是“匿名用户”
lie2=self.driver.find_element(By.XPATH,"//tr[1]/td[2]")
t1=lie2.text# <td>匿名用户</td>
self.assertEqual("匿名用户",t1)
一、其他数据检查
1.检查下拉列表里的默认被选中的选项:定位select标记的元素,然后封装Select类型对象,
first_selected_option属性可以获得第一个被选中的选项(也就是默认选项),
然后text属性获得option开始和结束标记之间的文本,最后就可以断言方法来检查该文本。
示例:
from selenium.webdriver.support.select import Select
# 检查默认的出生日期里的年是1960
y=self.driver.find_element(By.NAME,"birthdayYear")
s1=Select(y)
t3=s1.first_selected_option.text
self.assertEqual("1960",t3)
2.检查单选按钮或复选框是否是已经选中的状态:先定位单选按钮或复选框的元素,然后调用元素对象的
is_selected方法(无参的方法),就可以接受到该方法返回来的状态值(布尔值),最后使用assertTrue检查
该值代表已经选中,或使用assertFalse检查该值代表没有选中。
示例:
# 检查性别中“保密”单选按钮是默认已经选中的
baomi=self.driver.find_element(By.NAME,"sex")
b2=baomi.is_selected()
self.assertTrue(b2)
3.检查文本框里的内容:先定位到文本框后,然后使用页面元素对象的get_attribute("value")方法,参数是
value代表html语法里的标记的value属性,得到这个属性值就代表文本框里的当前内容,然后就可以检查该文本内容。
注意:文本框不能使用.text来获得内容,因为文本框的文本不是记录在开始和结束标记之间的。
示例:
# 检查电子邮件地址文本框里的内容是lisi@163.com
dian=self.driver.find_element(By.NAME,"email")
v1=dian.get_attribute("value")
self.assertEqual("lisi@163.com",v1)
4.检查弹出框弹出来(出现在网页上一层):使用Python语言的异常处理机制的语法,try……except……负责尝试
做某件事,一旦抛出指定的异常就进行相应的异常处理。try语句块里写切换到弹出框的代码(self.driver.switch_to.alert),
在except语句块里写NoAlertPresentException代表弹出框没有出现,设计一个函数用来判断是否弹出框提示框,当没有出现的时候,
让它返回False,出现的话返回True,最后在测试函数中调用这个自定义函数,对返回值做是否等于True的检查。
示例:
from selenium.common.exceptions import NoAlertPresentException
# 自定义函数:注意函数名不要以test开头,名称自定义
# 函数名:is_alert_present
# 功能:用于判断是否出现弹出框(弹出框是否弹出来)
# 参数:无
# 返回值:判断结果(bool类型)
def is_alert_present(self):
try:
self.driver.switch_to.alert
except NoAlertPresentException:
return False
return True
def test_2(self):
self.driver.get("http://localhost/upload/index.php")
sou=self.driver.find_element(By.CLASS_NAME,"go")
sou.click()
sleep(1)
# 检查弹出框是否弹出来
b=self.is_alert_present()
self.assertTrue(b)
5.检查弹出框里的信息是否正确:切换到弹出框,然后对Alert型对象使用text属性值来做检查。
建议:最后调用accept或dismiss函数把弹出框给关闭。
示例:
# 检查弹出框信息并关闭它
a=self.driver.switch_to.alert
self.assertEqual("请输入搜索关键词!",a.text)
a.accept()
练习:新建Python unit test类型的文件case8002.py,setUp里启动Firefox,tearDown关闭浏览器,test_1里打开ECShop前台首页,
点击“登录”,点击“立即登陆”,检查弹出一个提示框,检查提示框里的文本内容中包含“用户名不能为空”和“登录密码不能为空”(做两个检查),点击“确定”。
6.检查元素出现在网页里(能被定位到):try后尝试使用find_element来查找元素,在except后写NoSuchElementException,
如果抛出此异常代表元素定位不到,如果没有抛出,代表元素可以被定位到。封装一个自定义函数is_element_present用于判断是否可以定位到元素,
返回值是布尔值,True代表定位到,False代表未定位到,参数写一个定位条件(By.XX)和定位数据(str类型),在测试函数中调用此自定义函数,
最后就可以检查元素出现。
示例:
from selenium.common.exceptions import NoAlertPresentException,NoSuchElementException
# 判断元素是否可以被定位到(是否出现)
# 参数:how ---怎么定位?值是By.XXX
# what ---用什么定位?值是str类型的
# 返回值:布尔值,代表是否定位到
def is_element_present(self,how,what):
try:
self.driver.find_element(how,what)
except NoSuchElementException:
return False
return True
def test_xxx(self):
……
# 检查“上市日期”的元素出现
b1=self.is_element_present(By.NAME,"attr[172]")
self.assertTrue(b1)
unittest框架里的常用断言方法:用于检查数据的更多相关文章
- 即用了 测试脚本里面的 类的值,又继承了 unittest类 使用他的断言方法 (接口自动化 数据分离 变量相互调用 看这里)
- python的unittest框架中的assert断言
unittest框架自带断言,如果想用assert断言,一定要引入unittest.TestCase框架才行,不然不会自动识别assert断言
- Python3.7版本unittest框架添加用例的方法
1.实例demo是用谷歌浏览器在百度首页搜python的动作脚本: BaiDu_test是指脚本中自己定义的类名,test_get是指你的类中定义的testcase方法. 在if name函数 ...
- Junit框架使用--JUnit常用断言及注解
从别人博客中抄过来一点东西 原文地址:http://blog.csdn.net/wangpeng047/article/details/9628449 断言是编写测试用例的核心实现方式,即期望值是多少 ...
- pytest框架 里 fixture 参数化的方法
- unittest框架进坑系列_(含selenium数据分离的坑)
1.测试用例的执行顺序 有默认的顺序的,不是按你自己的排列执行,注意. 进坑原因,没有先执行制造变量的测试用例,导致其他用例无法找到变量值 2.数据分离的坑 在控制层 有函数嵌套,2个函数都必须带se ...
- 阶段3 2.Spring_04.Spring的常用注解_6 用于注入数据的注解
@Qualifier 指定id为accountDao1 测试 如果把Autowired注释掉的话, 就会报空指针异常.就是没有注入进来 @Qualifier不能独立使用必须和Autowired配合使用 ...
- Unittest框架小结
在日常的自动化测试过程中,Python里有一个自带的单元测试框架是unittest模块,简单易用,这里简单介绍下其主要的用法. Unittest测试框架主要包含四个部分 TestCase 也就是测试用 ...
- unittest框架官方翻译:中文版
指数 模块 | 下一个 | 上一个 | Python » 英语 法国 日本 朝鲜的 开发(3.8) 3.7.3rc1 3.6 3.5 2.7 文档 » Python标准库 » 开发工具 » | ...
随机推荐
- 自定义API(Jar包)的创建与使用(简单实现案例)
@ 目录 学习内容 1. 自定义工具类 2. 导出jar 3. 加载Jar包 4. 调用自定义的API方法 总结 学习内容 1. 自定义工具类 新建一个java项目,然后创建包和工具类StringUt ...
- 微信h5静默和非静默授权获取用户openId和用户信息的方法和步骤:
原文链接:https://blog.csdn.net/qq_35430000/article/details/79299529 一.openId是什么?openId是用户在当前公众号下的唯一标识('身 ...
- re模块补充与其他模块介绍
注:昨日写了re单个模块几个重要的点需要补充 一.re模块补充 1.findall独有的优先级别展示 res = re.findall('abc', 'abcabcabcabc') print(res ...
- os、sys、json、subprocess模块
今日内容概要 1.os模块 2.sys模块 3.json模块 4.subprocess模块 今日内容详细 os模块 """该模块主要是跟操作系统打交道"&quo ...
- Ant Design Pro V5 与 IdentityServer 实现 Password 模式的登录
最近处于休息状态,想趁着休息时间,为自己做一个后台. 后端框架选用了 Abp.之前公司使用了一些自研的框架,但由于人力资源有限,后期框架的升级及维护都是比较耗时,这次干脆直接使用Abp,即省心又能快速 ...
- Blazor 修改错误提示
我们在blazor中,如果代码有异常,会产生如下的错误 在群里很多朋友都问,这个错误提示是英文的,能不能改成中文? 这个当然是可以的. 其实这个错误描述是在项目里自己定义的,具体内容可以看_Layou ...
- partOne代码修改
学生毕业论文系统----代码修改 /* 基本类ScoreInformation类相较之前无变化*/public class ScoreInformation { private String st ...
- CoAP调试工具 Mozi.IoT.CoAP
前言 CoAP是一种类HTTP协议的物联网专用协议,其数据包为人类不可阅读的字节流形式,在开发相关应用的时候往往不能准确的了解数据包的内容.故需要专用的调试工具对数据和通讯进行调试. CoAP协议介绍 ...
- 自己的~/.vimrc
" 语法高亮syntax on " 搜索高亮set hlsearch " 显示行号set number" let mapleader="," ...
- Docker系列教程01-使用Docker镜像
docker系列导读 一文带你读懂什么是docker Docker安装部署 10张图带你深入理解Docker容器和镜像 前言 学习Docker,我们需要掌握它的三大核心概念:镜像.容器和仓库. 今天先 ...