亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python測試框架pytest介紹

 更新時(shí)間:2022年03月01日 16:38:43   作者:軟件測試君  
這篇文章主要介紹了Python測試框架pytest介紹,Pytest是一個(gè)非常成熟的全功能的python測試框架,有簡單靈活易上手、支持參數(shù)化等優(yōu)點(diǎn),下面其相關(guān)內(nèi)容需要的小伙伴可以參考一下

一、Pytest簡介

Pytest is a mature full-featured Python testing tool that helps you write better programs.The pytest framework makes it easy to write small tests, yet scales to support complex functional testing for applications and libraries.

通過官方網(wǎng)站介紹我們可以了解到,Pytest是一個(gè)非常成熟的全功能的python測試框架,主要有以下幾個(gè)特點(diǎn):

  • 簡單靈活易上手
  • 支持參數(shù)化
  • 支持簡單的單元測試和復(fù)雜的功能測試,還可以用來做自動(dòng)化測試
  • 具有很多第三方插件,并且可以自定義擴(kuò)展
  • 測試用例的skip和xfail處理
  • 可以很好的和Jenkins集成
  • 支持運(yùn)行由Nose、UnitTest編寫的測試用例

二、Pytest安裝

1.直接使用pip命令安裝:

pip install -U pytest ? ?# -U是如果已安裝會(huì)自動(dòng)升級最新版本

2.驗(yàn)證安裝結(jié)果:

pytest --version ? ?# 展示當(dāng)前安裝版本

C:\Users\edison>pytest --version
pytest 6.2.5

3.在pytest測試框架中,要遵循以下約束:

測試文件名要符合test_.py或_test.py格式(例如test_min.py)

測試類要以Test開頭,且不能帶有init方法

在單個(gè)測試類中,可以包含一個(gè)或多個(gè)test_開頭的函數(shù)

三、Pytest測試執(zhí)行

pytest進(jìn)行測試比較簡單,我們來看一個(gè)實(shí)例:

import pytest ? ?# 導(dǎo)入pytest包

def test_001(): ? ?# 函數(shù)以test_開頭
? ? print("test_01")

def test_002():
? ? print("test_02")

if __name__ == '__main__':
? ? pytest.main(["-v","test_1214.py"]) ? ?# 調(diào)用pytest的main函數(shù)執(zhí)行測試

這里我們定義了兩個(gè)測試函數(shù),直接打印出結(jié)果,下面執(zhí)行測試:

============================= test session starts =============================
platform win32 -- Python 3.8.0, pytest-6.2.5, py-1.11.0, pluggy-1.0.0 -- D:\Code\venv\Scripts\python.exe
cachedir: .pytest_cache
rootdir: D:\Code
collecting ... collected 2 items

test_1214.py::test_001 PASSED ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?[ 50%]
test_1214.py::test_002 PASSED ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?[100%]

============================== 2 passed in 0.11s ==============================

Process finished with exit code 0

輸出結(jié)果中顯示執(zhí)行了多少條案例、對應(yīng)的測試模塊、通過條數(shù)以及執(zhí)行耗時(shí)。

四、測試類主函數(shù)

pytest.main(["-v","test_1214.py"])

通過python代碼執(zhí)行pytest.main():

直接執(zhí)行pytest.main() 【自動(dòng)查找當(dāng)前目錄下,以test_開頭的文件或者以_test結(jié)尾的py文件】;

設(shè)置pytest的執(zhí)行參數(shù) pytest.main([’–html=./report.html’,‘test_login.py’])【執(zhí)行test_login.py文件,并生成html格式的報(bào)告】。

main()括號內(nèi)可傳入執(zhí)行參數(shù)和插件參數(shù),通過[]進(jìn)行分割,[]內(nèi)的多個(gè)參數(shù)通過‘逗號,’進(jìn)行分割:

運(yùn)行目錄及子包下的所有用例 pytest.main([‘目錄名’])

運(yùn)行指定模塊所有用例 pytest.main([‘test_reg.py’])

運(yùn)行指定模塊指定類指定用例pytest.main([‘test_reg.py::TestClass::test_method’]) 冒號分割

  • -m=xxx: 運(yùn)行打標(biāo)簽的用例
  • -reruns=xxx:失敗重新運(yùn)行
  • -q: 安靜模式, 不輸出環(huán)境信息
  • -v: 豐富信息模式, 輸出更詳細(xì)的用例執(zhí)行信息
  • -s: 顯示程序中的print/logging輸出

–resultlog=./log.txt 生成log

–junitxml=./log.xml 生成xml報(bào)告

五、斷言方法

pytest斷言主要使用Python原生斷言方法,主要有以下幾種:

  • == 內(nèi)容和類型必須同時(shí)滿足相等
  • in 實(shí)際結(jié)果包含預(yù)期結(jié)果
  • is 斷言前后兩個(gè)值相等
import pytest ? ?# 導(dǎo)入pytest包

def add(x,y): ? ?# 定義以test_開頭函數(shù)
? ? return x + y

def test_add():
? ? assert add(1,2) == 3 ? ?# 斷言成功

str1 = "Python,Java,Ruby"
def test_in():
? ? assert "PHP" in str1 ? ?# 斷言失敗

if __name__ == '__main__':
? ? pytest.main(["-v","test_pytest.py"]) ? ?# 調(diào)用main函數(shù)執(zhí)行測試
============================= test session starts =============================
platform win32 -- Python 3.8.0, pytest-6.2.5, py-1.11.0, pluggy-1.0.0 -- D:\Code\venv\Scripts\python.exe
cachedir: .pytest_cache
rootdir: D:\Code
collecting ... collected 2 items

test_pytest.py::test_add PASSED ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?[ 50%]
test_pytest.py::test_in FAILED ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [100%]

================================== FAILURES ===================================
___________________________________ test_in ___________________________________

? ? def test_in():
> ? ? ? assert "PHP" in str1
E ? ? ? AssertionError: assert 'PHP' in 'Python,Java,Ruby'

test_pytest.py:11: AssertionError
=========================== short test summary info ===========================
FAILED test_pytest.py::test_in - AssertionError: assert 'PHP' in 'Python,Java...
========================= 1 failed, 1 passed in 0.18s =========================

Process finished with exit code 0

可以看到運(yùn)行結(jié)果中明確指出了錯(cuò)誤原因是“AssertionError”,因?yàn)镻HP不在str1中。

六、常用命令詳解

1.運(yùn)行指定案例:

if __name__ == '__main__':
? ? pytest.main(["-v","-s","test_1214.py"])

2.運(yùn)行當(dāng)前文件夾包括子文件夾所有用例:

if __name__ == '__main__':
? ? pytest.main(["-v","-s","./"])

3.運(yùn)行指定文件夾(code目錄下所有用例):

if __name__ == '__main__':
? ? pytest.main(["-v","-s","code/"])

4.運(yùn)行模塊中指定用例(運(yùn)行模塊中test_add用例):

if __name__ == '__main__':
? ? pytest.main(["-v","-s","test_pytest.py::test_add"])

5.執(zhí)行失敗的最大次數(shù)

使用表達(dá)式"–maxfail=num"來實(shí)現(xiàn)(注意:表達(dá)式中間不能存在空格),表示用例失敗總數(shù)等于num 時(shí)停止運(yùn)行。

6.錯(cuò)誤信息在一行展示。

在實(shí)際項(xiàng)目中如果有很多用例執(zhí)行失敗,查看報(bào)錯(cuò)信息將會(huì)很麻煩。使用"–tb=line"命令,可以很好解決這個(gè)問題。

七、接口調(diào)用

本地寫一個(gè)查詢用戶信息的接口,通過pytest來調(diào)用,并進(jìn)行接口斷言。

?# -*- coding: utf-8 -*-
?import pytest
?import requests
?
?def test_agent():
? ? ?r = requests.post(
? ? ? ? ?url="http://127.0.0.1:9000/get_user",
? ? ? ? ?data={
? ? ? ? ? ? ?"name": "吳磊",
? ? ? ? ? ? "sex": 1
? ? ? ? },
? ? ? ? headers={"Content-Type": "application/json"}
? ? )
? ? print(r.text)
? ? assert r.json()['data']['retCode'] == "00" and r.json()['data']['retMsg'] == "調(diào)用成功"
if __name__ == "__main__":
? ? pytest.main(["-v","test_api.py"])?

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

相關(guān)文章

  • python腳本內(nèi)運(yùn)行l(wèi)inux命令的方法

    python腳本內(nèi)運(yùn)行l(wèi)inux命令的方法

    這篇文章主要介紹了python腳本內(nèi)運(yùn)行l(wèi)inux命令的方法,實(shí)例分析了Python基于subprocess模塊操作Linux命令的相關(guān)技巧,需要的朋友可以參考下
    2015-07-07
  • Jinja2過濾器的使用、控制語句示例詳解

    Jinja2過濾器的使用、控制語句示例詳解

    在Python中,如果需要對某個(gè)變量進(jìn)行處理,我們可以通過函數(shù)來實(shí)現(xiàn),這篇文章主要介紹了Jinja2過濾器的使用、控制語句,需要的朋友可以參考下
    2023-03-03
  • python selenium登錄豆瓣網(wǎng)過程解析

    python selenium登錄豆瓣網(wǎng)過程解析

    這篇文章主要介紹了python selenium登錄豆瓣網(wǎng)過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • 使用Selenium破解新浪微博的四宮格驗(yàn)證碼

    使用Selenium破解新浪微博的四宮格驗(yàn)證碼

    今天小編就為大家分享一篇關(guān)于使用Selenium破解新浪微博的四宮格驗(yàn)證碼的文章,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • Python使用百度api做人臉對比的方法

    Python使用百度api做人臉對比的方法

    今天小編就為大家分享一篇Python使用百度api做人臉對比的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • Python實(shí)現(xiàn)小黑屋游戲的完整實(shí)例

    Python實(shí)現(xiàn)小黑屋游戲的完整實(shí)例

    這篇文章主要給大家介紹了關(guān)于Python實(shí)現(xiàn)小黑屋游戲的完整實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • python return實(shí)現(xiàn)匯率轉(zhuǎn)換器教程示例

    python return實(shí)現(xiàn)匯率轉(zhuǎn)換器教程示例

    這篇文章主要為大家介紹了python return實(shí)現(xiàn)匯率轉(zhuǎn)換器教程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • Django 開發(fā)環(huán)境與生產(chǎn)環(huán)境的區(qū)分詳解

    Django 開發(fā)環(huán)境與生產(chǎn)環(huán)境的區(qū)分詳解

    這篇文章主要介紹了Django 開發(fā)環(huán)境與生產(chǎn)環(huán)境的區(qū)分詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Windows+Anaconda3+PyTorch+PyCharm的安裝教程圖文詳解

    Windows+Anaconda3+PyTorch+PyCharm的安裝教程圖文詳解

    這篇文章主要介紹了Windows+Anaconda3+PyTorch+PyCharm的安裝教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-04-04
  • PyCharm常用配置和常用插件(小結(jié))

    PyCharm常用配置和常用插件(小結(jié))

    這篇文章主要介紹了PyCharm常用配置和常用插件(小結(jié)),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02

最新評論