一、CSV的特點
- 逗號分割值文件格式,其文本以純文本形式存儲表格數據。純文本意味着該文件是一個字符序列,不含必須像二進制數字那樣被解讀的數據。比如數據庫中有 或 類型數據,這是候往往在程序中需要區別於字符串類型對待,有時候在處理大量數據的時候很麻煩,很多人選擇將數字也看作字符串,這時候就很有優勢。
- 文件由任意數目記錄實例組成,記錄實例間以某種換行符分隔。文件沒有兼容性的要求,即如類型文件無法用打開,相反也是,而且類型文件在和中打開是不同的,更甚之,不同發行版本的和文件用不同版本的打開用也會有問題,爲了處理一些結構化的數據實例文本應運而生,它可以無視兼容性和和文件類型和版本打開,因爲它只是文本文件。
- 打開工具:記事本或其他包含記事本編輯功能的軟件,如sublime,notepad++。
- 規則:
1. 以行爲單位,開頭不留空行;
2. 可含或不含列名,含列名則居文件第一行;
3. 一行數據不跨行,無空行;
4. 以半角逗號(英文輸入法)作爲分隔符。
二、數據驅動測試
數據驅動測試是自動化測試框架的其中之一。
相同的測試腳本給不同的測試數據去執行,測試的數據和測試行爲完全分離了,這樣的測試腳本設計模式就稱爲數據驅動測試。
與excel文件不同,csv文件中:
- 數據都沒有數據類型,值都是字符串;
- 沒有顏色和樣式,不能指定單元格的寬高,不能合併單元格;
- 沒有多個工作表;
- 不能嵌入圖像圖表。
三、CSV的讀寫
3.1 寫入CSV文件
3.1.1 用列表格式寫入
用兩個列表:表頭列表和實例列表。
import csv
headers = ['user','password']
rows = [['zyx','123'],["張先生",'000'],['張123','','123'],['a','b','']]
with open('count.csv','w') as f:
csv_writer = csv.writer(f)# 生成一個csv的寫對象
csv_writer.writerow(headers)# 寫入列表頭一行用writerow
csv_writer.writerows(rows)# 寫入多行實例行用writerows
上面的結果對csv文件來說是錯的,因爲有空行。如果打開csv文件出現空行的情況,那麼打開文件時需要添加一個參數 ,即。中有這個問題,中沒有這個問題,應該是換行機制的問題。
修改後結果:
3.1.2 用字典格式寫入
import csv
headers = ['user','password']
# rows = [['zyx','123'],["張先生",'000'],['張123','','123'],['a','b','']]
rows = [
{'user':'zyx','password':'123'},
{'user':"張先生",'password':'000'},
{'user':'張123','password':'123'},
# {'user':'c','password':'c','非空':''},
# {'user': 'a', 'password': 'b', '': '', '非空': ''},
]
with open('count.csv','w',newline='') as f:
csv_writer = csv.DictWriter(f,headers)# 生成一個csv的字典寫對象,並插入表單頭
csv_writer.writeheader()
csv_writer.writerows(rows)# 寫入多行實例行用writerows
對於字典格式寫入有一個問題,如果列表中的字典如果有非中指定的即如就會報錯:與上面列表方式相比,優勢就是更加嚴格,降低數據的錯誤率。
運行結果:
3.2.1 csv文件的讀
with open('count.csv','r') as f:
csv_reader = csv.reader(f)
print(csv_reader)
print('打印csv所有內容')
for row in csv_reader:
print(row)
運行結果: