unittest数据驱动
所谓的数据驱动就是将数据单独存放,在写方法将数据读取,然后将读取的数据放在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数据驱动的更多相关文章
- 【转】Python unittest数据驱动工具:DDT
背景 python 的unittest 没有自带数据驱动功能. 所以如果使用unittest,同时又想使用数据驱动,那么就可以使用DDT来完成. DDT是 “Data-Driven Tests”的缩写 ...
- python3 unittest数据驱动
我们在自动化测试的时候,有没有遇到这样的问题?例如一个登录的接口要做自动化,会有很多case(用例),密码错误,密码正确这种.在继承unittest.TestCase的类中,凡是以“test”开头的方 ...
- [小北De编程手记] : Lesson 02 玩转 xUnit.Net 之 基本UnitTest & 数据驱动
关于<玩转 xUnit.Net>系列文章,我想跟大家分享的不是简单的运行一下测试用例或是介绍一下标签怎么使用(这样的文章网上很多).上一篇<Lesson 01 玩转 xUnit.Ne ...
- [小北De编程手记] : Lesson 06 玩转 xUnit.Net 之 定义自己的FactAttribute
xUnit.Net本身提供了标记测试方法的标签Fact和Theory.在前面的文章<Lesson 02 玩转 xUnit.Net 之 基本UnitTest & 数据驱动>中,也对它 ...
- Python3|ddt|unittest|浅议数据驱动测试
目录 1.DDT简介 2.data装饰器 3.unpack装饰器 4.file_data装饰器 5.总结 1.DDT简介 Data-Driven Tests(DDT)即数据驱动测试.它允许您通过不同的 ...
- Unittest框架+ddt数据驱动+HTMLTestRunner+sendmail(自动发送测试报告)+git+Jenkins
本次写的是针对有代码基础的,没基础建议先去学基础,以下所有描述内容都是我已经在公司项目实践成功的!仅供参考 整体思路: 1.接口自动化用的是Python中unittest框架 2.所有的测试数据用例存 ...
- python+requests+excel+unittest+ddt接口自动化数据驱动并生成html报告
1.环境准备: python3.6 requests xlrd openpyxl HTMLTestRunner_api 2.目前实现的功能: 封装requests请求方法 在excel填写接口请求参数 ...
- python+requests+excel+unittest+ddt接口自动化数据驱动并生成html报告(二)
可以参考 python+requests接口自动化完整项目设计源码(一)https://www.cnblogs.com/111testing/p/9612671.html 原文地址https://ww ...
- Python+Selenium+Unittest+Ddt+HTMLReport分布式数据驱动自动化测试框架结构
1.Business:公共业务模块,如登录模块,可以把登录模块进行封装供调用 ------login_business.py from Page_Object.Common_Page.login_pa ...
随机推荐
- HR别掉坑里了,送你最精确的计薪算法!
月工资的计算方式有多种多样.即便是资深的HR,也会犯常识性的错误,正算反算,哪一个方法更适合,有时还会容易出现数字偏差,回想一下,你们公司的工资是如何计算的? 第一 劳动工资计算标准按几天计算 根 ...
- WinDbg基于管道的虚拟机Kernel Debugging
Windows Server 2012 + Hyper-V调试Windows XP SP3 32-bit虚拟机. 1.Hyper-V选中虚拟机,设置COM port,Named pipe定义一个名字. ...
- dyld: DYLD_ environment variables being ignored because main executable (/usr/bin/sudo) is setuid or setgid
这两个变量被设置了 DYLD_LIBRARY_PATH *或* LD_LIBRARY_PATH, 用下面的明令查找一下,一般在.bash_profile, .bashrc 等文件中.执行brew do ...
- Unity3D 记第一次面试
事情是发生在2014-03-05 周三下午 在群里面看到上海艺游急聘Unity3D开发工程师,就整理了下简历投了去!直到接到电话通知我去面试才知道 我之前是有投了简历!太忙了 以至于真的忘了,不过那个 ...
- node path的一些理解笔录
例子假如我们有这样的文件结构: app/ -lib/ -common.js -model -task.js -test.js 执行代码: var path = require("path&q ...
- JIRA - 使用指南(项目跟踪管理工具)
第一章.前言 JIRA 是澳大利亚 Atlassian 公司开发的一款优秀的问题跟踪管理软件工具,可以对各种类型的问题进行跟踪管理,包括缺陷.任务.需求.改进等.JIRA采用J2EE技术,能够跨 ...
- python标准库和第三方库的区别
1.python的标准库是随着pyhon安装的时候默认自带的库. 2.python的第三方库,需要下载后安装到python的安装目录下,不同的第三方库安装及使用方法不同. 3.它们调用方式是一样的,都 ...
- 8.11 数据库ORM(5)
2018-8-11 20:43:52 昨天从俺弟家回来了. 和俺弟聊天发现,他一直停留在自己目前的圈子,自己觉得很牛逼,比别人高人一等,, 读书无用论,,可以用 幸存者偏激理论 大概就是这个 可以否决 ...
- POJ-2777 Count Color(线段树,区间染色问题)
Count Color Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 40510 Accepted: 12215 Descrip ...
- InfluxDB通过HTTP API
SELECT "value" FROM "online_user_counter" curl -POST http://localhost:8086/query ...