单元测试框架(数据驱动csv,excel)

一、CSV(表格另存为时,将文件类型保存为CSV)

 

 

  在Python中读取csv⽂件⾥⾯的使⽤直接使⽤标准库csv就可以的,在csv的库⾥⾯,读取⽂件的⽅式主要分为两种的⽅式,字典或者是列表的⽅式来读取数据。
1、以列表的方式来读取
  (1)将文件添加到当前工程的data目录下

   (2)创建Utils工具  csvUtils.py代码如下

import csv
from utils.pathUtils import filePath

def readCsvList():
    # 列表的方式读取csv文件
    lists=[]
    with open(filePath(fileName='data.csv'),encoding='utf-8') as f:
        reader=csv.reader(f)
        # 不读取第一行
        next(reader)
        for item in reader:
            lists.append(item)
    return lists
print(readCsvList())

[['', '', '请输入邮箱名'], ['asddsDf', 'Asdf', '您输入的邮箱名格式不正确'], ['sddtfy@sina.com', 'sdsfghjgf', '登录名或密码错误']]

  (3)编写代码  导入读取的文件内容 文件内容是列表类型 根据索引获取信息

from page.sina import Sina
from page.init import InitSina
from utils.csvUtills import readCsvList
from utils.yamlUtils import getUrl
import unittest

class sinaTest(InitSina,Sina):
    def test_sina_001(self):
        self.login(username=readCsvList()[0][0],password=readCsvList()[0][1])
        self.assertEqual(self.getDivText,readCsvList()[0][2])

    def test_sina_002(self):
        self.login(username=readCsvList()[1][0],password=readCsvList()[1][1])
        self.assertEqual(self.getDivText,readCsvList()[1][2])

    def test_sina_003(self):
        self.login(username=readCsvList()[2][0],password=readCsvList()[2][1])
        self.assertEqual(self.getDivText,readCsvList()[2][2])


if __name__ == '__main__':
    unittest.main(verbosity=2)
2、以字典的方式来读取  CSV
  (1)将文件添加到当前工程的data目录下
  (2)创建Utils工具  csvUtils.py代码如下
import csv
from utils.pathUtils import filePath

def readCsvDict():
    #字典的方式读取csv文件
    lists=[]
    with open(filePath(fileName='data.csv'),encoding='utf-8') as f:
        reader=csv.DictReader(f)
        for item in reader:
            lists.append(dict(item))
    return lists
print(readCsvDict())

[{'\ufeffusername': '', 'password': '', '期望结果': '请输入邮箱名'},
{'\ufeffusername': 'asddsDf', 'password': 'Asdf', '期望结果': '您输入的邮箱名格式不正确'}, {'\ufeffusername': 'sddtfy@sina.com', 'password': 'sdsfghjgf', '期望结果': '登录名或密码错误'}]

  注意事项:读取的文件中有时候会出现"\ufeff"非法字符,这个时候需要改变编码方式'UTF-8'为'UTF-8-sig':

import csv
from utils.pathUtils import filePath

def readCsvDict():
    #字典的方式读取csv文件
    lists=[]
    with open(filePath(fileName='data.csv'),encoding='utf-8') as f:
        reader=csv.DictReader(f)
        for item in reader:
            lists.append(dict(item))
    return lists
print(readCsvDict())


[{'username': '', 'password': '', '期望结果': '请输入邮箱名'}, 
{'username': 'asddsDf', 'password': 'Asdf', '期望结果': '您输入的邮箱名格式不正确'}, {'username': 'sddtfy@sina.com', 'password': 'sdsfghjgf', '期望结果': '登录名或密码错误'}]

  (3)编写代码  导入读取的文件内容 文件内容是字典类型 根据索引和key的值获取信息

from page.sina import Sina
from page.init import InitSina
from utils.csvUtills import readCsvDict
from utils.yamlUtils import getUrl
import unittest

class sinaTest(InitSina,Sina):
    def test_sina_001(self):
        self.login(username=readCsvDict()[0]['\ufeffusername'],password=readCsvDict()[0]['password'])
        self.assertEqual(self.getDivText,readCsvDict()[0]['期望结果'])

    def test_sina_002(self):
        self.login(username=readCsvDict()[1]['\ufeffusername'],password=readCsvDict()[1]['password'])
        self.assertEqual(self.getDivText,readCsvDict()[1]['期望结果'])

    def test_sina_003(self):
        self.login(username=readCsvDict()[2]['\ufeffusername'],password=readCsvDict()[2]['password'])
        self.assertEqual(self.getDivText,readCsvDict()[2]['期望结果'])


if __name__ == '__main__':
    unittest.main(verbosity=2)

二、Excel

  在Python中,操作Excel的⽂件需要使⽤到第三⽅的库xlrd,需要单独的安装,安装的命令为:
    pip3 install xlrd
  (1)表格另存为时,将文件类型保存为xls  将文件添加到当前工程的data目录下

   (2)创建Utils工具  excelUtils.py代码如下  读取表格信息

import xlrd
from utils.pathUtils import filePath

def readExcel():
    lists=[]
    book=xlrd.open_workbook(filePath(fileName='data.xls'))
    sheet=book.sheet_by_index(0)
    for item in range(1,sheet.nrows):
        lists.append(sheet.row_values(item))
    return lists
print(readExcel())


[['', '', '请输入邮箱名'], ['sdfgas', 'asdfg', '您输入的邮箱名格式不正确'], ['sddtfy@sina.com', 'Sdfgfy', '登录名或密码错误']]

  (3)编写代码  导入读取的文件内容 文件内容是字典类型 根据索引获取信息

from page.sina import Sina
from page.init import InitSina
from utils.excelUtils import readExcel
from utils.yamlUtils import getUrl
import unittest

class sinaTest(InitSina,Sina):
    def test_sina_001(self):
        self.login(username=readExcel()[0][0],password=readExcel()[0][1])
        self.assertEqual(self.getDivText,readExcel()[0][2])

    def test_sina_002(self):
        self.login(username=readExcel()[1][0],password=readExcel()[1][1])
        self.assertEqual(self.getDivText,readExcel()[1][2])

    def test_sina_003(self):
        self.login(username=readExcel()[2][0],password=readExcel()[2][1])
        self.assertEqual(self.getDivText,readExcel()[2][2])


if __name__ == '__main__':
    unittest.main(verbosity=2)

 

posted @ 2021-08-26 17:44  wuyikai  阅读(155)  评论(0编辑  收藏  举报