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

Python使用Playwright進行API接口測試

 更新時間:2026年01月23日 09:58:32   作者:朱公子的Note  
在當今的自動化測試領(lǐng)域,結(jié)合Web UI和API接口測試已成為提升測試覆蓋率和效率的關(guān)鍵,本文就來介紹一下使用Playwright和Python進行高效的API接口測試,感興趣的可以了解一下

在當今的自動化測試領(lǐng)域,結(jié)合Web UI和API接口測試已成為提升測試覆蓋率和效率的關(guān)鍵。Playwright作為一個強大的自動化測試工具,除了在Web UI測試中大放異彩,還能與Python結(jié)合,實現(xiàn)強大的API接口測試功能。本文將帶你探索如何使用Playwright和Python進行高效的API接口測試。

Playwright除了在Web UI測試中的出色表現(xiàn),如何通過與Python結(jié)合,開展API接口測試,并實現(xiàn)高效的自動化測試?

playwright也是可以做接口測試的,但個人覺得還是沒有requests庫強大,但和selenium相比的話,略勝一籌,畢竟支持API登錄,也就是說可以不用交互直接調(diào)用接口操作了。

怎么用

既然是API的測試了,那肯定就別搞UI自動化那套,搞什么瀏覽器交互,那叫啥API測試,純屬扯淡。

也不像有些博主更懶,直接貼的官方例子,難道我用你再幫我復制一次?

來下面,說明下使用playwright如何做API測試?

實例化request對象

示例代碼如下:

playwright.request.new_context()

沒錯,實例化后,就是調(diào)API,看吧,其實也不是很難是不是?

實戰(zhàn)舉栗

這里用我自己寫的學生管理系統(tǒng)的部分接口來做演示,并對部分常用api做以說明,代碼示例都是用同步的寫法。

1、GET請求

示例如下:

def testQueryStudent(playwright: Playwright):
    """
    查詢學生
    """
    url = 'http://localhost:8090/studentFindById'
    param = {
        'id': 105
    }
    request_context = playwright.request.new_context()
    response = request_context.get(url=url, params=param)
    assert response.ok
    assert response.json()
    print('\n', response.json())

效果:

2、POST請求

示例代碼:

def testAddStudent(playwright: Playwright):
    """
    新增學生
    :return:
    """
    url = 'http://localhost:8090/studentAdd'
    request_body = {
        "className": "banji",
        "courseName": "wuli",
        "email": "ales@qq.com",
        "name": "ales",
        "score": 70,
        "sex": "boy",
        "studentId": "92908290"
    }
    header = {"Content-Type": "application/json"}
    request_context = playwright.request.new_context()
    response = request_context.post(url=url, headers=header, data=request_body)
    assert response.ok
    assert response.json()
    print('\n', response.json())

效果:

3、PUT請求

示例代碼:

def testUpdateStudents(playwright: Playwright):
    """
    修改學生
    """
    url = 'http://localhost:8090/studentUpdate/100'
    param = {
        'studentId': "id" + str(100),
        'name': "name" + str(100),
        'score': 100,
        "sex": "girl",
        "className": "class" + str(100),
        "courseName": "course" + str(100),
        "email": str(100) + "email@qq.com"

    }
    request_context = playwright.request.new_context()
    response = request_context.put(url=url, form=param)
    assert response.ok
    assert response.json()
    print('\n', response.json())

效果:

4、DELETE請求

示例代碼:

def testDeleteStudents(playwright: Playwright):
    """
    刪除學生
    """
    url = 'http://localhost:8090/studentDelete/' + str(105)
    request_context = playwright.request.new_context()
    response = request_context.delete(url=url)
    assert response.ok
    assert response.json()
    print('\n', response.json())

效果:

5、上傳文件

這個是特例吧,按照官方給的方法,我真的是死活也不能成功,一直都是提示上上傳文件不能為空,也不到為啥,結(jié)果我用了一個替代方案,就是抓包模擬的構(gòu)造入?yún)?,才成功,也是曲折呀?/p>

示例代碼:

def test_upload_file(playwright: Playwright):
    '''
    上傳文件
    :param playwright:
    :return:
    '''
    # 創(chuàng)建請求上下文
    request_context = playwright.request.new_context()

    # 定義上傳文件的URL
    upload_url = "http://localhost:8090/fileUpload"

    # 文件路徑
    file_path = "d:/demo.txt"

    # 獲取文件名和MIME類型
    filename = file_path.split('/')[-1]
    mime_type, _ = mimetypes.guess_type(file_path)
    if not mime_type:
        mime_type = 'application/octet-stream'

    # 讀取文件內(nèi)容
    with open(file_path, 'rb') as file:
        file_content = file.read()

    # 構(gòu)造multipart/form-data的邊界字符串
    boundary = '---------------------' + str(random.randint(1e28, 1e29 - 1))

    # 構(gòu)造請求體
    body = (
        f'--{boundary}\r\n'
        f'Content-Disposition: form-data; name="file"; filename="{filename}"\r\n'
        f'Content-Type: {mime_type}\r\n\r\n'
        f'{file_content.decode("utf-8") if mime_type.startswith("text/") else file_content.hex()}'
        f'\r\n--{boundary}--\r\n'
    ).encode('utf-8')

    # 設置請求頭
    headers = {
        'Content-Type': f'multipart/form-data; boundary={boundary}',
    }
    # 發(fā)起POST請求
    response = request_context.post(upload_url, data=body, headers=headers)

    # 檢查響應
    assert response.status == 200, f"Upload failed with status: {response.status}"
    assert response.ok
    assert response.json()
    print('\n', response.json())

效果:

官方寫法:

# 讀取文件內(nèi)容
with open(file_path, 'rb') as file:
    file_content = file.read()
    response = request_context.post(upload_url, multipart={
        "fileField": {
            "name": "demo.txt",
            "mimeType": "text/plain",
            "buffer": file_content,
        }
    })
print('\n', response.json())

效果:

官方寫法,我不知道為啥就是不成功,有大俠知道嗎,還請幫忙給個例子,小弟不勝感激!

寫在最后

隨著Web應用的發(fā)展,API接口測試的重要性日益突出。開發(fā)人員和測試人員必須確保API接口的可靠性和穩(wěn)定性,以保證應用的正常運行和用戶體驗的提升。通過使用Playwright進行全面的API接口測試,可以有效提高測試效率和覆蓋率。

使用Playwright進行API接口測試,不僅能夠高效地驗證API的各項功能,還能確保Web應用的整體性能和可靠性。通過本文的介紹,你已經(jīng)掌握了如何使用Playwright進行GET、POST、PUT、DELETE和上傳文件的API接口測試。

通過本文的詳細解析,我們展示了如何使用Playwright進行各種常見的API接口測,掌握Playwright,讓你的API測試如虎添翼,輕松應對各種復雜的測試場景。

到此這篇關(guān)于Python使用Playwright進行API接口測試的文章就介紹到這了,更多相關(guān)Python Playwright API接口測試內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python使用Selenium模擬瀏覽器自動操作功能

    Python使用Selenium模擬瀏覽器自動操作功能

    這篇文章主要介紹了Python使用Selenium模擬瀏覽器自動操作功能,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-09-09
  • 淺談Keras中shuffle和validation_split的順序

    淺談Keras中shuffle和validation_split的順序

    這篇文章主要介紹了淺談Keras中shuffle和validation_split的順序,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • Python利用Scrapy框架爬取豆瓣電影示例

    Python利用Scrapy框架爬取豆瓣電影示例

    這篇文章主要介紹了Python利用Scrapy框架爬取豆瓣電影,結(jié)合實例形式分析了Python使用Scrapy框架爬取豆瓣電影信息的具體操作步驟、實現(xiàn)技巧與相關(guān)注意事項,需要的朋友可以參考下
    2020-01-01
  • Python編程functools模塊創(chuàng)建修改的高階函數(shù)解析

    Python編程functools模塊創(chuàng)建修改的高階函數(shù)解析

    本篇文章主要為大家介紹functools模塊中用于創(chuàng)建、修改函數(shù)的高階函數(shù),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2021-09-09
  • python使用pip安裝SciPy、SymPy、matplotlib教程

    python使用pip安裝SciPy、SymPy、matplotlib教程

    今天小編大家分享一篇python使用pip安裝SciPy、SymPy、matplotlib教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • Series和DataFrame使用簡單入門

    Series和DataFrame使用簡單入門

    這篇文章主要介紹了Series和DataFrame使用簡單入門,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-11-11
  • 使用python實現(xiàn)省市三級菜單效果

    使用python實現(xiàn)省市三級菜單效果

    本文給大家分享的是使用使用python實現(xiàn)省市三級菜單效果的代碼,非常的實用,有需要的小伙伴可以參考下。
    2016-01-01
  • Python如何繪制概率分布直方圖淺析

    Python如何繪制概率分布直方圖淺析

    項目中在前期經(jīng)常要看下數(shù)據(jù)的分布情況,這對于探究數(shù)據(jù)規(guī)律非常有用,概率分布表示樣本數(shù)據(jù)的模樣,使用Python繪制頻率分布直方圖非常簡潔,因為用的頻次非常高,這篇文章主要給大家介紹了關(guān)于Python如何繪制概率分布直方圖的相關(guān)資料,需要的朋友可以參考下
    2021-12-12
  • python opencv如何實現(xiàn)圖片繪制

    python opencv如何實現(xiàn)圖片繪制

    這篇文章主要介紹了python opencv如何實現(xiàn)圖片繪制,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-01-01
  • python實現(xiàn)圖片素描效果

    python實現(xiàn)圖片素描效果

    這篇文章主要介紹了python如何實現(xiàn)圖片素描效果,幫助大家利用python處理圖片,感興趣的朋友可以了解下
    2020-09-09

最新評論

普洱| 广安市| 苏尼特右旗| 托克逊县| 文水县| 南澳县| 大悟县| 香河县| 福州市| 体育| 辽源市| 盖州市| 普格县| 沂源县| 靖远县| 贺州市| 伊吾县| 濮阳县| 聂荣县| 连州市| 宁明县| 微山县| 黑龙江省| 太原市| 兰溪市| 珠海市| 灌阳县| 斗六市| 偏关县| 辉县市| 枣强县| 哈尔滨市| 万州区| 库尔勒市| 松潘县| 三江| 苏尼特右旗| 达孜县| 鱼台县| 莆田市| 墨脱县|