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

Python自動(dòng)化測(cè)試之封裝讀取Excel類實(shí)現(xiàn)方式

 更新時(shí)間:2025年11月24日 10:33:04   作者:葬愛家族小阿杰  
文章介紹了數(shù)據(jù)驅(qū)動(dòng)測(cè)試(DDT)的思想和使用步驟,包括使用@ddt和@list_data裝飾器,以及如何在測(cè)試方法中接收用例數(shù)據(jù),文章還簡(jiǎn)要介紹了DDT的底層原理,涉及到保存和遍歷測(cè)試數(shù)據(jù),最后,文章提供了一個(gè)綜合運(yù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ī)械分詞之逆向最大匹配算法代碼示例

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

    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 模擬登錄B站的示例代碼

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

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

    利用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)可視化代碼解析

    這篇文章主要介紹了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)

    這篇文章主要介紹了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ù)法輸出的方法

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

    python如何將圖片轉(zhuǎn)換為字符圖片

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

    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
  • CentOS安裝OpenSSL1.1.1全過程

    CentOS安裝OpenSSL1.1.1全過程

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

最新評(píng)論

成都市| 乌鲁木齐市| 枣强县| 信宜市| 老河口市| 兰州市| 大新县| 崇州市| 杭锦旗| 渭源县| 河东区| 启东市| 长白| 长垣县| 渝中区| 宣武区| 肃宁县| 黑河市| 宝坻区| 德安县| 灵宝市| 凤城市| 汪清县| 若尔盖县| 饶平县| 余姚市| 德钦县| 墨脱县| 来宾市| 广饶县| 曲阳县| 汕尾市| 承德县| 柳州市| 长武县| 静安区| 沈丘县| 叶城县| 山阳县| 抚顺市| 芜湖市|