欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python使用requests+excel進(jìn)行接口自動(dòng)化測試的實(shí)現(xiàn)

 更新時(shí)間:2023年11月02日 08:55:46   作者:軟件測試曦曦  
在當(dāng)今的互聯(lián)網(wǎng)時(shí)代中,接口自動(dòng)化測試越來越成為軟件測試的重要組成部分,本文就來介紹了python使用requests+excel進(jìn)行接口自動(dòng)化測試的實(shí)現(xiàn),感興趣的可以了解一下

在當(dāng)今的互聯(lián)網(wǎng)時(shí)代中,接口自動(dòng)化測試越來越成為軟件測試的重要組成部分。Python是一種簡單易學(xué),高效且可擴(kuò)展的語言,自然而然地成為了開發(fā)人員的首選開發(fā)語言。而requests和xlwt這兩個(gè)常用的Python標(biāo)準(zhǔn)庫,能夠幫助我們輕松地開發(fā)接口自動(dòng)化測試,更快更好地完成測試工作。

下面是這兩個(gè)庫在接口自動(dòng)化測試中可帶來的好處:

1. requests可以方便地模擬發(fā)送HTTP請(qǐng)求,實(shí)現(xiàn)接口測試,支持GET、POST、PUT、DELETE等請(qǐng)求方式。使用requests,我們可以輕松實(shí)現(xiàn)對(duì)接口的請(qǐng)求及返回結(jié)果的處理。

import requests
response = requests.get('http://example.com')

2. requests提供了對(duì)HTTP頭的復(fù)雜處理和特定認(rèn)證方案的支持,包括Basic,Digest,OAuth等。這意味著我們可以輕松地實(shí)現(xiàn)接口的授權(quán)認(rèn)證。

import requests
response = requests.get('http://example.com', auth=('user', 'pass'))

3. requests支持Cookie和Session的處理,可以用來保證用戶的身份認(rèn)證或后續(xù)請(qǐng)求的連續(xù)性。這對(duì)于需要進(jìn)行多次調(diào)用接口的測試非常有用。

4. xlwt庫支持將測試結(jié)果以Excel格式將結(jié)果輸出或記錄。接口自動(dòng)化測試有的時(shí)候需要輸出測試報(bào)告,xlwt可以方便地將測試結(jié)果輸出為Excel表格。

import xlwt
book = xlwt.Workbook(encoding='utf-8')
sheet = book.add_sheet('Sheet1')
sheet.write(0, 0, '接口名稱')
sheet.write(0, 1, '測試結(jié)果')
sheet.write(1, 0, 'test API')
sheet.write(1, 1, 'Pass')
book.save('result.xls')

5. xlwt庫為測試結(jié)果提供格式化的輸出,用戶可以自定義表格樣式以及表格內(nèi)容的格式、字體、顏色、邊框等,以便用戶快速理解接口測試結(jié)果,對(duì)其做出有效的應(yīng)對(duì)。

綜上所述,requests和xlwt是Python的兩個(gè)基礎(chǔ)庫,它們能夠方便地完成接口自動(dòng)化測試,并且大大提高測試的效率和精度。因此,如果您還沒有使用它們進(jìn)行接口自動(dòng)化測試,不妨試試看以下的接口自動(dòng)化測試框架DEMO。

完整代碼

import requests
import xlwt
import xlrd
import unittest
class BaseTestCase(unittest.TestCase):
    url = ""  # 接口請(qǐng)求的 URL
    method = "GET"  # 接口請(qǐng)求的方法
    data = {}  # 接口請(qǐng)求的數(shù)據(jù)
    headers = {}  # 接口請(qǐng)求的頭部
    expected_code = 200  # 預(yù)期的 HTTP 狀態(tài)碼
    expected_result = {}  # 預(yù)期的響應(yīng)結(jié)果
    def setUp(self):
        """每個(gè)測試方法執(zhí)行前調(diào)用"""
        pass
    def tearDown(self):
        """每個(gè)測試方法執(zhí)行后調(diào)用"""
        pass
    def run_case(self, case):
        """動(dòng)態(tài)創(chuàng)建的測試方法,執(zhí)行測試用例"""
        self.url = case['url']
        self.method = case['method']
        self.data = case['data']
        self.headers = case.get('headers', {})
        self.expected_code = case.get('expected_code', 200)
        self.expected_result = case.get('expected_result', {})
        self.test_api()
    def test_api(self):
        """測試用例實(shí)現(xiàn)"""
        response = requests.request(self.method, url=self.url, headers=self.headers, data=self.data)
        self.assertEqual(response.status_code, self.expected_code)  # 斷言響應(yīng)的 HTTP 狀態(tài)碼是否與預(yù)期一致
        self.assertDictEqual(response.json(), self.expected_result)  # 斷言響應(yīng)的結(jié)果是否與預(yù)期一致
def read_excel(file_path, sheet_name):
    workbook = xlrd.open_workbook(file_path)  # 打開 Excel 文件
    sheet = workbook.sheet_by_name(sheet_name)  # 獲取 Excel 工作表
    rows = sheet.nrows  # 獲取行數(shù)
    cases = []
    for i in range(1, rows):  # 從第 2 行開始讀取測試用例
        case = {}
        case['url'] = sheet.cell_value(i, 0)  # 讀取接口請(qǐng)求的 URL
        case['method'] = sheet.cell_value(i, 1)  # 讀取接口請(qǐng)求的方法
        case['data'] = sheet.cell_value(i, 2)  # 讀取接口請(qǐng)求的數(shù)據(jù)
        case['headers'] = sheet.cell_value(i, 3)  # 讀取接口請(qǐng)求的頭部
        case['expected_code'] = int(sheet.cell_value(i, 4))  # 讀取預(yù)期的 HTTP 狀態(tài)碼
        case['expected_result'] = eval(sheet.cell_value(i, 5))  # 讀取預(yù)期的響應(yīng)結(jié)果
        case['name'] = sheet.cell_value(i, 6)  # 讀取用例名稱
        cases.append(case)
    return cases
def write_excel(file_path, sheet_name, cases):
    workbook = xlwt.Workbook()
    sheet = workbook.add_sheet(sheet_name)
    sheet.write(0, 0, '用例編號(hào)')
    sheet.write(0, 1, '用例名稱')
    sheet.write(0, 2, '測試結(jié)果')
    for i, case in enumerate(cases):
        sheet.write(i+1, 0, i+1)
        sheet.write(i+1, 1, case.get('name', '') or case['url'])
        sheet.write(i+1, 2, '通過' if case.get('result') else '失敗')
    workbook.save(file_path)
if __name__ == '__main__':
    cases = read_excel('cases.xlsx', 'Sheet1')  # 讀取測試用例
    suite = unittest.TestSuite()  # 創(chuàng)建測試套件
    for case in cases:
        case_name = case.get('name', '') or case['url']
        setattr(BaseTestCase, 'test_{}'.format(case_name), lambda self, case=case: self.run_case(case))
        # 動(dòng)態(tài)創(chuàng)建測試方法,并將測試用例綁定到測試方法上
    unittest.TextTestRunner().run(suite)  # 執(zhí)行測試套件
    write_excel('report.xls', 'Sheet1', cases)  # 寫入測試結(jié)果報(bào)告

下面詳細(xì)介紹一下??上方代碼

1. 安裝所需要的庫和依賴項(xiàng)

pip install requests
pip install xlwt

2. 編寫接口自動(dòng)化測試基類及測試用例實(shí)現(xiàn)

import requests
import xlwt
import unittest
class BaseTestCase(unittest.TestCase):
    url = ""  # 接口請(qǐng)求的 URL
    method = "GET"  # 接口請(qǐng)求的方法
    data = {}  # 接口請(qǐng)求的數(shù)據(jù)
    headers = {}  # 接口請(qǐng)求的頭部
    expected_code = 200  # 預(yù)期的 HTTP 狀態(tài)碼
    expected_result = {}  # 預(yù)期的響應(yīng)結(jié)果
    def setUp(self):
        """每個(gè)測試方法執(zhí)行前調(diào)用"""
        pass  # 可以進(jìn)行一些初始化工作
    def tearDown(self):
        """每個(gè)測試方法執(zhí)行后調(diào)用"""
        pass  # 可以進(jìn)行一些清理工作
    def test_api(self):
        """測試用例實(shí)現(xiàn)"""
        response = requests.request(self.method, url=self.url, headers=self.headers, data=self.data)
        self.assertEqual(response.status_code, self.expected_code)  # 斷言響應(yīng)的 HTTP 狀態(tài)碼是否與預(yù)期一致
        self.assertDictEqual(response.json(), self.expected_result)  # 斷言響應(yīng)的結(jié)果是否與預(yù)期一致

3. 編寫 Excel 文件讀取和解析函數(shù)

import xlrd
def read_excel(file_path, sheet_name):
    workbook = xlrd.open_workbook(file_path)  # 打開 Excel 文件
    sheet = workbook.sheet_by_name(sheet_name)  # 獲取 Excel 工作表
    rows = sheet.nrows  # 獲取行數(shù)
    cases = []
    for i in range(1, rows):  # 從第 2 行開始讀取測試用例
        case = {}
        case['url'] = sheet.cell_value(i, 0)  # 讀取接口請(qǐng)求的 URL
        case['method'] = sheet.cell_value(i, 1)  # 讀取接口請(qǐng)求的方法
        case['data'] = sheet.cell_value(i, 2)  # 讀取接口請(qǐng)求的數(shù)據(jù)
        case['headers'] = sheet.cell_value(i, 3)  # 讀取接口請(qǐng)求的頭部
        case['expected_code'] = int(sheet.cell_value(i, 4))  # 讀取預(yù)期的 HTTP 狀態(tài)碼
        case['expected_result'] = eval(sheet.cell_value(i, 5))  # 讀取預(yù)期的響應(yīng)結(jié)果
        cases.append(case)
    return cases

4. 編寫 Excel 結(jié)果報(bào)告寫入函數(shù)

def write_excel(file_path, sheet_name, cases):
    workbook = xlwt.Workbook()
    sheet = workbook.add_sheet(sheet_name)
    sheet.write(0, 0, '用例編號(hào)')
    sheet.write(0, 1, '用例名稱')
    sheet.write(0, 2, '測試結(jié)果')
    for i, case in enumerate(cases):
        sheet.write(i+1, 0, i+1)
        sheet.write(i+1, 1, case.get('name', ''))
        sheet.write(i+1, 2, '通過' if case.get('result') else '失敗')
    workbook.save(file_path)

5. 編寫主函數(shù)

if __name__ == '__main__':
    cases = read_excel('cases.xlsx', 'Sheet1')  # 讀取測試用例
    suite = unittest.TestSuite()  # 創(chuàng)建測試套件
    for case in cases:
        case_name = case.get('name', '') or case['url']
        setattr(BaseTestCase, 'test_{}'.format(case_name), lambda self, case=case: self.run_case(case))
        # 動(dòng)態(tài)創(chuàng)建測試方法,并將測試用例綁定到測試方法上
    unittest.TextTestRunner().run(suite)  # 執(zhí)行測試套件
    write_excel('report.xls', 'Sheet1', cases)  # 寫入測試結(jié)果報(bào)告

這是一個(gè)簡單的Python接口自動(dòng)化測試項(xiàng)目,可以通過Excel 文件管理測試用例,支持多種 HTTP 請(qǐng)求方法和數(shù)據(jù)格式,適用于各種接口自動(dòng)化測試場景。

到此這篇關(guān)于python使用requests+excel進(jìn)行接口自動(dòng)化測試的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)python 接口自動(dòng)化測試內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python Pytorch gpu 分析環(huán)境配置

    Python Pytorch gpu 分析環(huán)境配置

    Pytorch是目前最火的深度學(xué)習(xí)框架之一,目前也支持了pytorch的GPU加速,所以我就想著,在這兩個(gè)電腦上裝個(gè)Pytorch,這篇文章主要介紹了Python Pytorch(gpu)分析環(huán)境配置,需要的朋友可以參考下
    2023-04-04
  • python?OpenCV實(shí)現(xiàn)圖像特征匹配示例詳解

    python?OpenCV實(shí)現(xiàn)圖像特征匹配示例詳解

    這篇文章主要為大家介紹了python?OpenCV實(shí)現(xiàn)圖像特征匹配示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • python asyncio 協(xié)程庫的使用

    python asyncio 協(xié)程庫的使用

    這篇文章主要介紹了python asyncio 協(xié)程庫的使用,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2021-01-01
  • Python中變量的作用域的具體使用

    Python中變量的作用域的具體使用

    本文主要介紹了Python中變量的作用域的具體使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • python數(shù)字圖像處理之骨架提取與分水嶺算法

    python數(shù)字圖像處理之骨架提取與分水嶺算法

    這篇文章主要介紹了python數(shù)字圖像處理之骨架提取與分水嶺算法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-04-04
  • Python Django框架設(shè)計(jì)模式詳解

    Python Django框架設(shè)計(jì)模式詳解

    Django是一個(gè)開源的Web應(yīng)用框架,由Python寫成。采用MVC的軟件設(shè)計(jì)模式,主要目標(biāo)是使得開發(fā)復(fù)雜的、數(shù)據(jù)庫驅(qū)動(dòng)的網(wǎng)站變得簡單。Django注重組件的重用性和“可插拔性”,敏捷開發(fā)和DRY法則(Don’t Repeat Yoursef)
    2021-11-11
  • Python區(qū)塊鏈創(chuàng)建Block Class教程

    Python區(qū)塊鏈創(chuàng)建Block Class教程

    這篇文章主要為大家介紹了Python區(qū)塊鏈創(chuàng)建Block Class教程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • Python解析Excle文件中的數(shù)據(jù)方法

    Python解析Excle文件中的數(shù)據(jù)方法

    今天小編就為大家分享一篇Python解析Excle文件中的數(shù)據(jù)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • 用matplotlib畫等高線圖詳解

    用matplotlib畫等高線圖詳解

    這篇文章主要介紹了用matplotlib畫等高線圖詳解,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-12-12
  • Python 如何安裝Selenium(推薦)

    Python 如何安裝Selenium(推薦)

    Selenium 是一個(gè) Web的自動(dòng)化測試工具 ,最初是為網(wǎng)站 自動(dòng)化測試而開發(fā)的 , Selenium 可以直接調(diào)用瀏覽器 ,它支持所有主流的瀏覽器,本文給大家介紹Python 如何安裝Selenium,感興趣的朋友一起看看吧
    2021-05-05

最新評(píng)論