python webdriver 测试框架-数据驱动DDT的例子
先在cmd环境 运行 pip install ddt 安装数据驱动ddt模块
脚本:
#encoding=utf-8
from selenium import webdriver
import unittest,time
import logging,traceback
import ddt
from selenium.common.exceptions import NoSuchElementException
#初始化日志对象
logging.basicConfig(
#日志级别
level=logging.INFO,
#日志格式
#时间、代码所在文件名、代码行号、日志级别名称、日志信息
format='%(asctime)s %(filename)s[line:%(lineno)d]%(levelname)s %(message)s',
#打印日志的时间
datefmt='%a, %d %b %Y %H:%M:%S',
#日志文件存放的目录(目录必须存在)及日志文件名
filename='d:/report.log',
#打开日志文件的方式
filemode='w'
)
@ddt.ddt#装饰器
class TestDemo(unittest.TestCase):
def setUp(self):
self.driver=webdriver.Firefox(executable_path='c:\\geckodriver')
#数据驱动时指定的三个数据,每个数据是一个list
@ddt.data([u"神奇动物在哪里",u"叶茨"],
[u"疯狂动物城",u"古德温"],
[u"大话西游之月光宝盒",u"周星驰"])
@ddt.unpack#解包,将测试数据对应到testdata和expectdata,将上边的list里的两个参数赋值给函数中,下边有解包的例子
def test_dataDrivenByObj(self,testdata,expectdata):#传参数
url="http://www.baidu.com"
#访问百度首页
self.driver.get(url)
#设置隐式等待时间为10秒,个别浏览器版的驱动可能会有问题,待验证
self.driver.implicitly_wait(10)
try:
#找到搜索输入框,并输入测试数据
self.driver.find_element_by_id("kw").send_keys(testdata)
#找到搜索按钮,并点击
self.driver.find_element_by_id('su').click()
time.sleep(3)
#断言期望结果是否出现在页面源代码中
self.assertTrue(expectdata in self.driver.page_source)
except NoSuchElementException,e:
logging.error("element in page not existed, abnormal stack info:"+str(traceback.format_exc()))
except AssertionError,e:
logging.info("search '%s',expected '%s', failed" %(testdata,expectdata))
except Exception,e:
logging.error("unknown error, error message:"+str(traceback.format_exc()))
else:
logging.info('search "%s", expected "%s" passed' %(testdata,expectdata))
def tearDown(self):
self.driver.quit()
if __name__=='__main__':
unittest.main()
结果:
如果日志对象没有问题的话,会把日志打到文件里,如下(第一次运行时日志对象中的filename错写成fimename了,就没有生成report.log文件,而是打印在了cmd里)
乱码是因为英文系统不支持中文导致的
D:\test_python>python task_test.py
Tue, 26 Jun 2018 12:48:12 task_test.py[line:54]INFO search "神奇动物在哪里", expected "叶茨" passed
.Tue, 26 Jun 2018 12:48:28 task_test.py[line:54]INFO search "疯狂动物城", expected "古德温" passed
.Tue, 26 Jun 2018 12:48:43 task_test.py[line:54]INFO search "大话西游之月光宝盒", expected "周星驰" passed
.
----------------------------------------------------------------------
Ran 3 tests in 47.395s
OK
第二次运行时,修改了日志对象,日志就打在了report.log中了,控制台没有打日志
D:\test_python>python task_test.py
...
----------------------------------------------------------------------
Ran 3 tests in 46.251s
OK
Report.log:
内容:
Tue, 26 Jun 2018 12:49:41 task_test.py[line:54]INFO search "神奇动物在哪里", expected "叶茨" passed
Tue, 26 Jun 2018 12:49:56 task_test.py[line:54]INFO search "疯狂动物城", expected "古德温" passed
Tue, 26 Jun 2018 12:50:12 task_test.py[line:54]INFO search "大话西游之月光宝盒", expected "周星驰" passed
解包的例子:
>>> def add(a,b):
... return a+b
...
>>> add(1,2)
3
>>> add((1,2))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: add() takes exactly 2 arguments (1 given)
#直接传元祖会报错,但是前边加个*就是解包的过程,把元素拆分出来,把元素分别赋值给add函数
>>> add(*(1,2))
3
python webdriver 测试框架-数据驱动DDT的例子的更多相关文章
- python webdriver 测试框架-数据驱动txt文件驱动,带报告的例子
数据驱动txt文件驱动的方式,带报告 data.txt: gloryroad test||光荣之路 摔跤爸爸||阿米尔 超人||电影 data_driven_by_txt_file.py: #enco ...
- python webdriver 测试框架-数据驱动exce驱动,不用ddt的方式
data.xlsx: 脚本: #encoding=utf-8from selenium import webdriverimport timeimport datetimefrom openpyxl ...
- python webdriver 测试框架-数据驱动excel驱动的方式
简介: 数据驱动excel驱动方式,就是数据配置在excel里面,主程序调用的时候每次用从excel里取出的数据作为参数,进行操作, 需要掌握的地方是对excel的操作,要灵活的找到目标数据 测试数据 ...
- python webdriver 测试框架-数据驱动json文件驱动的方式
数据驱动json文件的方式 test_data_list.json: [ "邓肯||蒂姆", "乔丹||迈克尔", "库里||斯蒂芬", & ...
- python webdriver 测试框架-数据驱动xml驱动方式
数据驱动xml驱动的方式 存数据的xml文件:TestData.xml: <?xml version="1.0" encoding="utf-8"?> ...
- python webdriver 测试框架-行为驱动例子
安装行为驱动模块lettuce(卷心菜)模块 pip install lettuce Successfully installed argparse-1.4.0 colorama-0.3.9 extr ...
- Python3-unittest测试框架之DDT数据驱动
unittest测试框架之DDT数据驱动 ddt的使用 DDT数据驱动 DDT:Data Driver Test(数据驱动测试) 数据驱动思想:数据和用例进行分离,通过外部数据去生成测试用例 安装 p ...
- python nose测试框架全面介绍十---用例的跳过
又来写nose了,这次主要介绍nose中的用例跳过应用,之前也有介绍,见python nose测试框架全面介绍四,但介绍的不详细.下面详细解析下 nose自带的SkipTest 先看看nose自带的S ...
- python nose测试框架全面介绍七--日志相关
引: 之前使用nose框架时,一直使用--logging-config的log文件来生成日志,具体的log配置可见之前python nose测试框架全面介绍四. 但使用一段时间后,发出一个问题,生成的 ...
随机推荐
- Django里面是文件静态化的方法
看Django官网的时候,由于自己的英语基础较差,而实现的谷歌翻译比较烂,只能看懂个大概.在文件静态化的时候,讲的比较繁琐一点,没怎么看懂,遂询问了一下其他人,明白了许多,但是细节需要注意的地方特别多 ...
- win10下安装Oracle 11g 32位客户端遇到INS-13001环境不满足最低要求
在以管理员身份运行setup.exe之后,出现了:[INS-13001]环境不满足最低要求,通过网上搜索之后找到了解决途径 首先,打开你的解压后的database文件夹,找到stage,然后cvu,找 ...
- poj_3579 二分法
题目大意 给定N个数,这些数字两两求差构成C(N,2)(即N*(N-1)/2)个数值,求这C(N,2)个数的中位数.N <= 100000. 题目分析 根据数据规模N最大为100000,可知不能 ...
- 【Android 7.1.1】 锁屏界面点击“空白处”响应事件
frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLa ...
- apt-get install的默认安装路径
apt-get 命令 sudo apt-get update sudo apt-get install tree sudo apt-get -y install tree //跳过系统提示,直接安装. ...
- 百度地图API功能
984aca5bc78b070e59f34e230f11cf6d http://api.map.baidu.com/api?v=2.0&ak=您的密钥" <html> & ...
- ipmi监控主机
author: headsen chen date: 2018-09-25 20:04:01 IPMI介绍 IPMI(Intelligent Platform Management ...
- linux 中 ll 命令显示 的大小 是什么单位的啊?
ll显示的是字节,可以使用-h参数来提高文件大小的可读性,另外ll不是命令,是ls -l的别名 ls -al 是以字节单位显示文件或者文件夹大小: 字节b,千字节kb, 1G=1024M=1024 ...
- 【BZOJ2668】[cqoi2012]交换棋子 费用流
[BZOJ2668][cqoi2012]交换棋子 Description 有一个n行m列的黑白棋盘,你每次可以交换两个相邻格子(相邻是指有公共边或公共顶点)中的棋子,最终达到目标状态.要求第i行第j列 ...
- jQuery --- 收集表单
第一种:常用获取对应表单的value值进行收集: 第二种:用jQuery的 serializeArray() 方法收集: <form id="change"> < ...