測試驅動之csv文件在自動化中的使用(十)

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的文件中,來進行處理。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章