前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >测试驱动之csv文件在自动化中的使用(十)

测试驱动之csv文件在自动化中的使用(十)

作者头像
无涯WuYa
发布2018-10-25 16:18:44
2.9K0
发布2018-10-25 16:18:44
举报
文章被收录于专栏:Python自动化测试

python提供了对csv文件处理的模块,直接import csv就可以了,那么神秘是csv文件了?csv文件全名称为Comma-Separated Values,csv是通用的,相对简单的文件格式,其文件已纯文件形式存储数据。我们把数据存储在csv的文件中,然后写一个函数获取到csv文件的数据,在自动化中引用,这样,我们自动化中使用到的数据,就可以直接在csv文件中维护了,见下面的一个csv文件的格式:

特别提示:excel的文件,格式为xls,xlsx,后缀不能直接修改为.csv,如果这样,再读取csv文件的时候,会直接出现: _csv.Error:line contains NULL byte,解决这个问题是办法是,可以把文件另存为csv文件,就不会出错了。

下面我们实现读写csv文件中的数据,具体见如下实现的代码:

#!/usr/bin/env python

#coding:utf-8

import csv

#读取csv的文件

def getCsv(file_name='d:/test.csv'):

rows=[]

withopen(file_name,'rb') as f:

readers=csv.reader(f,delimiter=',',quotechar='|')

next(readers,None)

forrow in readers:

rows.append(row)

print rows

#csv文件中写数据

def writeCsv(file_name='d:/test.csv'):

withopen(file_name,'wb') as f:

write=csv.writer(f)

write.writerow(['Element','system'])

data=[

('selenium','webdriver'),

('appium','android'),

('appium','ios'),

('selenium','python')

]

write.writerows(data)

f.close()

if __name__=='__main__':

writeCsv()

getCsv()

执行后的结果为:

为了具体读取到csv文件中某一列的数据,我们可以把读取csv文件的方法修改如下,见代码:

#读取csv的文件

defgetCsv(value1,value2,file_name='d:/test.csv'):

rows=[]

withopen(file_name,'rb') as f:

readers=csv.reader(f,delimiter=',',quotechar='|')

next(readers,None)

forrow in readers:

rows.append(row)

returnrows[value1][value2]

如我们需要读取第一个selenium,csv文件内容见如上的截图,那么调用的方法代码为;

#读取csv的文件

defgetCsv(value1,value2,file_name='d:/test.csv'):

rows=[]

withopen(file_name,'rb') as f:

readers=csv.reader(f,delimiter=',',quotechar='|')

next(readers,None)

forrow in readers:

rows.append(row)

returnrows[value1][value2]

if __name__=='__main__':

printgetCsv(0,0)

见执行后的截图:

已百度搜索输入框为实例,在搜索输入框输入csv文件中的字符,我们把读写csv文件的函数写在location.py的模块中,见location.py的源码:

#!/usr/bin/env python

#coding:utf-8

import csv

#读取csv的文件

defgetCsv(value1,value2,file_name='d:/test.csv'):

rows=[]

withopen(file_name,'rb') as f:

readers=csv.reader(f,delimiter=',',quotechar='|')

next(readers,None)

forrow in readers:

rows.append(row)

returnrows[value1][value2]

#csv文件中写数据

def writeCsv(file_name='d:/test.csv'):

withopen(file_name,'wb') as f:

write=csv.writer(f)

write.writerow(['Element','system'])

data=[

('selenium','webdriver'),

('appium','android'),

('appium','ios'),

('selenium','python')

]

write.writerows(data)

f.close()

把测试代码写在baiduTest.py的模块中,见该模块的源码:

#!/usr/bin/python

#coding:utf-8

from selenium import webdriver

import location

import unittest

class BaiduTest(unittest.TestCase):

defsetUp(self):

self.driver=webdriver.Firefox()

self.driver.maximize_window()

self.driver.implicitly_wait(30)

self.driver.get(location.getCsv(4,0))

deftestCase_01(self):

'''获取csv文件中第二列第一位的数据进行搜索'''

self.driver.find_element_by_id('kw').send_keys(location.getCsv(1,0))

importtime

time.sleep(5)

deftearDown(self):

self.driver.quit()

if __name__=='__main__':

suite=unittest.TestLoader().loadTestsFromTestCase(BaiduTest)

unittest.TextTestRunner(verbosity=2).run(suite)

在如上的测试代码中,我把url,以及搜索的字符都放在了csv的文件中,在测试脚本中,只需要调用读取csv文件的函数,这样,我们就可以实现了把测试使用到的数据存储在csv的文件中,来进行处理。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2015-09-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python自动化测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据保险箱
数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档