Python自動(dòng)化測(cè)試之封裝讀取Excel類實(shí)現(xiàn)方式
ddt的使用步驟
1、測(cè)試類前面使用@ddt
2、在測(cè)試方法前使用@list_data(測(cè)試數(shù)據(jù))
3、在測(cè)試方法中定義一個(gè)參數(shù),用于接收用例數(shù)據(jù)
ddt:DataDriverTest(數(shù)據(jù)驅(qū)動(dòng)測(cè)試)
思想:把測(cè)試數(shù)據(jù)和用例代碼進(jìn)行分離,通過外部數(shù)據(jù)去生成測(cè)試用例,方便后期維護(hù),以及測(cè)試數(shù)據(jù)管理
ddt底層原理
1、保存測(cè)試數(shù)據(jù)
2、遍歷測(cè)試數(shù)據(jù),生成測(cè)試方法
import unittest
from unittestreport import ddt,list_data
import requests
cases = [
{"excepted":{"code":0, "msg":"登陸成功"},"params":{"username":"aaa", "password":"123456"}},
{"excepted":{"code":1, "msg":"登陸失敗"},"params":{"username":"aaa", "password":"123"}},
{"excepted":{"code":1, "msg":"登陸失敗"},"params":{"username":" ", "password":"123456"}},
]
@ddt
class TestLogin(unittest.TestCase):
@list_data(cases)
def test_login(self, item):
data = item['params']
expected = item['expected']
res = login_check(**data)
self.assertEqual(expected, res)
封裝讀取Excel類

import openpyxl
class HandleExcel:
def __init__(self, filename, sheetname):
'''
:param filename: excel文件名字
:param sheetname: 表單名
'''
self.filename = filename
self.sheetname = sheetname
def read_data(self):
# 加載excel工作簿
workbook = openpyxl.load_workbook(self.filename)
# 選中表單
sh = workbook[self.sheetname]
# 獲取所有數(shù)據(jù)
cel = list(sh.rows)
# 變量第一行數(shù)據(jù)
tital = [i.value for i in cel[0]]
cases = []
# 遍歷除第一行以外的行
for item in cel[1:]:
# 獲取該行的數(shù)據(jù)
data = [i.value for i in item]
# 把第一行數(shù)據(jù)和當(dāng)前行數(shù)據(jù)打包成字典
dic = dict(zip(tital, data))
# 把字典添加到列表中
cases.append(dic)
return cases
def write_data(self, row, column, value):
'''
:param row: 寫入行
:param column: 寫入列
:param value: 寫入值
:return:
'''
workbook = openpyxl.load_workbook(self.filename)
sh = workbook[self.sheetname]
sh.cell(row=row, column=column, value=value)
workbook.save(self.filename)
def close_file(self):
self.close_file(self.filename)
if __name__ == '__main__':
t = HandleExcel("cases.xlsx", "login").read_data()
print(t)

綜合運(yùn)用:
import unittest
import os
import requests
from unittestreport import ddt,list_data
from commons.handle_excel import HandleExcel
from commons.handle_path import DATAS_DIR
from commons.handle_config import conf
from commons.tools import replace_data
from commons.handle_log import log
@ddt
class TestLogin(unittest.TestCase):
excel=HandleExcel(os.path.join(DATAS_DIR,'apicases.xlsx'),'login')
cases=excel.read_data()
@list_data(cases)
def test_login(self,item):
# 1、準(zhǔn)備數(shù)據(jù)
url=conf.get('env','base_url')+item['url']
item['data']=replace_data(item['data'],TestLogin)
params=eval(item['data'])
method=item['method'].lower()
expected=eval(item['expected'])
# 2、請(qǐng)求接口
response=requests.request(method=method,url=url,json=params)
res=response.json()
code = response.status_code
print('請(qǐng)求參數(shù):', params)
print('預(yù)期結(jié)果:', expected)
print('實(shí)際結(jié)果:', res)
print('返回碼:', code)
# 3、斷言
try:
self.assertEqual(expected['code'],code)
self.assertIn(expected['msg'],res.values())
except AssertionError as e:
log.error('用例-----【{}】-----執(zhí)行不通過'.format(item['title']))
log.exception(e)
raise e
else:
log.info('用例-----【{}】------執(zhí)行通過'.format(item['title']))
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
python實(shí)現(xiàn)機(jī)械分詞之逆向最大匹配算法代碼示例
這篇文章主要介紹了python實(shí)現(xiàn)機(jī)械分詞之逆向最大匹配算法代碼示例,具有一定借鑒價(jià)值,需要的朋友可以參考下。2017-12-12
PyCharm2025中設(shè)置conda的多個(gè)Python版本的方法實(shí)踐
本文介紹了在PyCharm 2025.1.1版本中使用Anaconda管理多個(gè)Python版本的經(jīng)驗(yàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-10-10
利用Python的Twisted框架實(shí)現(xiàn)webshell密碼掃描器的教程
這篇文章主要介紹了利用Python的Twisted框架實(shí)現(xiàn)webshell密碼掃描器的教程,用到了Twisted框架的異步通信機(jī)制,需要的朋友可以參考下2015-04-04
Python爬取數(shù)據(jù)并實(shí)現(xiàn)可視化代碼解析
這篇文章主要介紹了Python爬取數(shù)據(jù)并實(shí)現(xiàn)可視化代碼解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08
Python讀取excel文件中帶公式的值的實(shí)現(xiàn)
這篇文章主要介紹了Python讀取excel文件中帶公式的值的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04
python 不以科學(xué)計(jì)數(shù)法輸出的方法
今天小編就為大家分享一篇python 不以科學(xué)計(jì)數(shù)法輸出的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-07-07
python中列表推導(dǎo)式與生成器表達(dá)式對(duì)比詳解
python當(dāng)然不是一門編譯型語言,但是它還是要被解析成二進(jìn)制的字節(jié)碼才能被執(zhí)行,執(zhí)行它的正是python解釋器,下面這篇文章主要給大家介紹了關(guān)于python中列表推導(dǎo)式與生成器表達(dá)式對(duì)比的相關(guān)資料,需要的朋友可以參考下2023-01-01

