所谓的数据驱动就是将数据单独存放,在写方法将数据读取,然后将读取的数据放在testcase里面。

当然如果这种testcase都是一样的,只有需要的数据不一样,也可以将testcase写成一个方法,把上面获取的数据作为参数传进方法里面!

下面是一个关于登陆的自动化测试,由于登录的步骤完全一样,就是每次登录时用的账号密码不一样,所以可以用数据驱动啊!

def login(username, password):
driver.find_element_by_id("idInput").send_keys(username)
driver.find_element_by_id("pwdInput").send_keys(password)
driver.find_element_by_id("loginBtn").click() if __name__ == '__main__':
login("zhangsan","123")
#...
#...
login("lisi","456")

当传zhangsan,程序就会用zhangsan登录,当传lisi,就会用lisi登录。

数据驱动的本质就是“测试数据”与“执行代码”做分离。至于,“测试数据”放哪儿都可以。

下面是csv文件的数据驱动

读取数据文件,并得到相应的数据,把这些数据用到具体的某个用例当中

from selenium import webdriver
import unittest
import csv csvData = csv.reader(open('C:\\Users\\chenjia\\Desktop\\test.csv','r')) Data = []
for i in csvData: #获取csv中每一行的数据(每一行的数据都是一个列表)
print i #打印每一行的数据(也就是打印每一行列表) data= []
for j in i: #获取每一行的每一个单元格的值(也就是遍历每一行的单元格的值)
data.append(j) #获取每一个单元表格的值,由于每次循环j只能显示一个值,所以data也只能显示一个值
Data.append(data) #所以再将data的每一个值都添加到Data里面 print Data
print Data[0][0] #打印第一个小数列里面的第一个元素
print Data[3][2] #打印第4个小数列里面的第3个元素
print Data[-1][-1] #打印最后一个小数列里面的最后一个元素 class loginTest(unittest.TestCase): def setUp(self):
self.driver = webdriver.Chrome()
self.driver.get("http://xxx.login.page") # 封装用户登录
def user_login(self, username, password):
self.driver.find_element_by_id("idInput").send_keys(username)
self.driver.find_element_by_id("pwdInput").send_keys(password)
self.driver.find_element_by_id("loginBtn").click() def test_login1(self):
'''用户名、密码为空登录'''
username = Data[0][1]
password = Data[0][2]
self.user_login(username, password) def test_login2(self):
'''用户名正确,密码为空'''
username = Data[1][1]
password = Data[1][2]
self.user_login(username, password) def test_login3(self):
'''用户名为空,密码正确'''
username = Data[2][1]
password = Data[2][2]
self.user_login(username, password) def test_login4(self):
'''用户名密码正确 '''
username = Data[3][1]
password = Data[3][2]
self.user_login(username, password) if __name__ == '__main__':
unittest.main()

下面一段代码是在unittest里面用python读取excel 数据

#此代码为获取excel表中的每一个cell单元格的值,并将每一行的值作为一个小列表,整个excel表就是由多行值(多行小列表)构成的一个大列表

import xlrd
data = xlrd.open_workbook('C:\Users\chenjia\Desktop\unittest.xlsx') # 打开xls文件 table = data.sheets()[0] # 打开第一张表
nrows = table.nrows # 获取表的行数
ncols = table.ncols # 获取表的列数 Cell_List = []
for i in range(1, nrows):
row_data = table.row_values(i) #获取每一行的值
print row_data
cell_list = [] #建一个列表用于存放获取每一个cell表格的值
for l in range(ncols):
cell_data = row_data[l] #获取每一个cell表格的值
print cell_data
cell_list.append(cell_data) #获取每一个cell表格的值,由于每次循环cell_data只能显示一个值,所以cell_list只能显示一个值
Cell_List.append(cell_list) #所以再将cell_list的每一个值都添加到Cell_List里面 print "----------------------------------------------------------------------------------"
print Cell_List

unittest数据驱动的更多相关文章

  1. 【转】Python unittest数据驱动工具:DDT

    背景 python 的unittest 没有自带数据驱动功能. 所以如果使用unittest,同时又想使用数据驱动,那么就可以使用DDT来完成. DDT是 “Data-Driven Tests”的缩写 ...

  2. python3 unittest数据驱动

    我们在自动化测试的时候,有没有遇到这样的问题?例如一个登录的接口要做自动化,会有很多case(用例),密码错误,密码正确这种.在继承unittest.TestCase的类中,凡是以“test”开头的方 ...

  3. [小北De编程手记] : Lesson 02 玩转 xUnit.Net 之 基本UnitTest & 数据驱动

    关于<玩转 xUnit.Net>系列文章,我想跟大家分享的不是简单的运行一下测试用例或是介绍一下标签怎么使用(这样的文章网上很多).上一篇<Lesson 01 玩转 xUnit.Ne ...

  4. [小北De编程手记] : Lesson 06 玩转 xUnit.Net 之 定义自己的FactAttribute

    xUnit.Net本身提供了标记测试方法的标签Fact和Theory.在前面的文章<Lesson 02 玩转 xUnit.Net 之 基本UnitTest & 数据驱动>中,也对它 ...

  5. Python3|ddt|unittest|浅议数据驱动测试

    目录 1.DDT简介 2.data装饰器 3.unpack装饰器 4.file_data装饰器 5.总结 1.DDT简介 Data-Driven Tests(DDT)即数据驱动测试.它允许您通过不同的 ...

  6. Unittest框架+ddt数据驱动+HTMLTestRunner+sendmail(自动发送测试报告)+git+Jenkins

    本次写的是针对有代码基础的,没基础建议先去学基础,以下所有描述内容都是我已经在公司项目实践成功的!仅供参考 整体思路: 1.接口自动化用的是Python中unittest框架 2.所有的测试数据用例存 ...

  7. python+requests+excel+unittest+ddt接口自动化数据驱动并生成html报告

    1.环境准备: python3.6 requests xlrd openpyxl HTMLTestRunner_api 2.目前实现的功能: 封装requests请求方法 在excel填写接口请求参数 ...

  8. python+requests+excel+unittest+ddt接口自动化数据驱动并生成html报告(二)

    可以参考 python+requests接口自动化完整项目设计源码(一)https://www.cnblogs.com/111testing/p/9612671.html 原文地址https://ww ...

  9. Python+Selenium+Unittest+Ddt+HTMLReport分布式数据驱动自动化测试框架结构

    1.Business:公共业务模块,如登录模块,可以把登录模块进行封装供调用 ------login_business.py from Page_Object.Common_Page.login_pa ...

随机推荐

  1. canvas练习 - 圆

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. css布局 - 九宫格布局的方法汇总(更新中...)

    目录: margin负值实现 祖父和亲爹的里应外合 换个思路 - li生了儿子帮大忙. 借助absolute方位值,实现自适应的网格布局 cloumn多栏布局 grid display: table: ...

  3. css笔记 - 张鑫旭css课程笔记之 border 篇

    border地址 border特性: 能形成BFC但是不能清除浮动.但是bfc也是把子元素的margin包裹进来,但是拿自己的margin穿透没办法的. 边框宽度不支持百分比 透明border可以突破 ...

  4. html2canvas - 微信中长按存图 - 将h5活动结果保存到本地

    现在有很多在微信里流行的h5活动页.这些小h5大部分都是简单的交互然后得出一个abcd早就拟定好的结果,根据你的选项分几种情况,最终得到其中一个作为你测试的答案.比如这个就是最后那张结果图: 当时自己 ...

  5. webpack4 优化记录

    webpack4.0优化那些事儿 一 缩小文件搜索范围 1 include & exclude 1) action 限制编译范围 2) useage module: { rules: [ { ...

  6. 【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验二十:SDRAM模块③ — 页读写 α

    实验二十:SDRAM模块③ — 页读写 α 完成单字读写与多字读写以后,接下来我们要实验页读写.丑话当前,实验二十的页读写只是实验性质的东西,其中不存在任何实用价值,笔者希望读者可以把它当成页读写的热 ...

  7. 关于sizeof和strlen

    已知 char *str1="absde"; char str2[]="absde"; char str3[8]={'a',}; char ss[] = &qu ...

  8. 关于卸载vmware后如何删除VMware Network Adapter VMnet1虚拟网卡

    默认情况下.我们在windows下安装了vmware虚拟机后,都会产生VMware Network Adapter VMnet1虚拟网卡 对于vmware虚拟网卡的管理,我们可以在vmware虚拟机软 ...

  9. 【LOJ6077】「2017 山东一轮集训 Day7」逆序对 生成函数+组合数+DP

    [LOJ6077]「2017 山东一轮集训 Day7」逆序对 题目描述 给定 n,k ,请求出长度为 n的逆序对数恰好为 k 的排列的个数.答案对 109+7 取模. 对于一个长度为 n 的排列 p ...

  10. Jmeter TCP取样器配置及发送图解

    最近在通过Jmeter测试TCP发送请求时,遇到相关问题,现记录 查看管方文档,TCP发送有三种启用方式: TCPClientImpl:文本数据,默认为这种 BinaryTCPClientImpl:传 ...