最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python自動化測試之封裝讀取Excel類實現(xiàn)方式

 更新時間:2025年11月24日 10:33:04   作者:葬愛家族小阿杰  
文章介紹了數(shù)據(jù)驅動測試(DDT)的思想和使用步驟,包括使用@ddt和@list_data裝飾器,以及如何在測試方法中接收用例數(shù)據(jù),文章還簡要介紹了DDT的底層原理,涉及到保存和遍歷測試數(shù)據(jù),最后,文章提供了一個綜合運用的示例,并呼吁大家支持腳本之家

ddt的使用步驟

1、測試類前面使用@ddt

2、在測試方法前使用@list_data(測試數(shù)據(jù))

3、在測試方法中定義一個參數(shù),用于接收用例數(shù)據(jù)

ddt:DataDriverTest(數(shù)據(jù)驅動測試)

思想:把測試數(shù)據(jù)和用例代碼進行分離,通過外部數(shù)據(jù)去生成測試用例,方便后期維護,以及測試數(shù)據(jù)管理

ddt底層原理

1、保存測試數(shù)據(jù)

2、遍歷測試數(shù)據(jù),生成測試方法

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ù)和當前行數(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)


綜合運用:

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、準備數(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、請求接口
        response=requests.request(method=method,url=url,json=params)
        res=response.json()
        code = response.status_code
        print('請求參數(shù):', params)
        print('預期結果:', expected)
        print('實際結果:', 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']))

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • python實現(xiàn)機械分詞之逆向最大匹配算法代碼示例

    python實現(xiàn)機械分詞之逆向最大匹配算法代碼示例

    這篇文章主要介紹了python實現(xiàn)機械分詞之逆向最大匹配算法代碼示例,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • PyCharm2025中設置conda的多個Python版本的方法實踐

    PyCharm2025中設置conda的多個Python版本的方法實踐

    本文介紹了在PyCharm 2025.1.1版本中使用Anaconda管理多個Python版本的經驗,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-10-10
  • python 模擬登錄B站的示例代碼

    python 模擬登錄B站的示例代碼

    這篇文章主要介紹了python 模擬登錄B站的示例代碼,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-12-12
  • 利用Python的Twisted框架實現(xiàn)webshell密碼掃描器的教程

    利用Python的Twisted框架實現(xiàn)webshell密碼掃描器的教程

    這篇文章主要介紹了利用Python的Twisted框架實現(xiàn)webshell密碼掃描器的教程,用到了Twisted框架的異步通信機制,需要的朋友可以參考下
    2015-04-04
  • Python爬取數(shù)據(jù)并實現(xiàn)可視化代碼解析

    Python爬取數(shù)據(jù)并實現(xiàn)可視化代碼解析

    這篇文章主要介紹了Python爬取數(shù)據(jù)并實現(xiàn)可視化代碼解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-08-08
  • Python讀取excel文件中帶公式的值的實現(xiàn)

    Python讀取excel文件中帶公式的值的實現(xiàn)

    這篇文章主要介紹了Python讀取excel文件中帶公式的值的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-04-04
  • python 不以科學計數(shù)法輸出的方法

    python 不以科學計數(shù)法輸出的方法

    今天小編就為大家分享一篇python 不以科學計數(shù)法輸出的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • python如何將圖片轉換為字符圖片

    python如何將圖片轉換為字符圖片

    這篇文章主要為大家詳細介紹了python將圖片轉換為字符圖片的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • python中列表推導式與生成器表達式對比詳解

    python中列表推導式與生成器表達式對比詳解

    python當然不是一門編譯型語言,但是它還是要被解析成二進制的字節(jié)碼才能被執(zhí)行,執(zhí)行它的正是python解釋器,下面這篇文章主要給大家介紹了關于python中列表推導式與生成器表達式對比的相關資料,需要的朋友可以參考下
    2023-01-01
  • CentOS安裝OpenSSL1.1.1全過程

    CentOS安裝OpenSSL1.1.1全過程

    文章介紹了從頭開始編譯安裝Python3.10的步驟,包括檢查和安裝必要的依賴項、下載并解壓源碼、配置和編譯環(huán)境、創(chuàng)建軟連接以及配置環(huán)境變量,最后驗證安裝是否成功
    2025-03-03

最新評論

香港| 米脂县| 正镶白旗| 札达县| 民和| 门头沟区| 罗江县| 信宜市| 淳安县| 惠来县| 南京市| 永修县| 新邵县| 深圳市| 香格里拉县| 青冈县| 读书| 固镇县| 虎林市| 浑源县| 康平县| 玛纳斯县| 镶黄旗| 台中市| 肇庆市| 龙江县| 辽源市| 永寿县| 盐城市| 文成县| 乡城县| 清徐县| 茂名市| 津南区| 武冈市| 龙胜| 来凤县| 抚远县| 漠河县| 孝昌县| 德钦县|