<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
昨天在群裡面,有兩個新手的小夥伴提問:Pytest 和 Unittest是Python中屬於最常用的兩個測試框架。那麼他們有些什麼區別呢? Playwright 為什麼只給了Pytest的深度支援,而不是Unittest呢?
這是個好問題, 田辛老師這裡做一個簡要的梳理。 下次有測試的小夥伴吹牛的時候可以顯得很懂的樣紙~
在安裝方面, Unittest肯定更好, 因為不用安裝。 Unittest屬於Python標準庫, 裝Python的時候就安裝了。 而Pytest的安裝需要通過pip安裝即可,也不算複雜。 以上是安裝,那麼使用呢?
在使用上Pytest更加靈活,可以在命令列中使用各種選項來執行測試,而Unittest則需要在指令碼中編寫測試用例並使用Unittest模組來執行測試。這一點上Pytest加分較多。
Pytest和Unittest在編寫測試用例方面也有一些區別。相對於Unittest而言,Pytest的測試用例編寫更加簡潔。Pytest使用Python的assert關鍵字來斷言測試結果,而Unittest則需要使用assertEqual、assertTrue等方法來進行斷言。
下面是一個使用Pytest編寫的測試用例範例,測試用例的目的是測試下面的類:
class Calculator: def add(self, a, b): return a + b def subtract(self, a, b): return a - b
如果用Pytest編寫
import pytest from Calc import Calculator @pytest.mark.parametrize("a, b, expected", [ (2, 3, 5), (0, 0, 0), (-1, 1, 0), ]) def test_calculator_add(a, b, expected): calculator = Calculator() assert calculator.add(a, b) == expected
而使用Unittest編寫的相同測試用例則為:
import unittest from Calc import Calculator class TestCalculator(unittest.TestCase): def test_calculator_add(self): calculator = Calculator() self.assertEqual(calculator.add(2, 3), 5) self.assertEqual(calculator.add(0, 0), 0) self.assertEqual(calculator.add(-1, 1), 0)
Unittest必須建立測試類, 所以絕大多數場景下,討論程式碼簡潔性Pytest要更加的加分。 而且我們可以對比一下輸出:
下面是Pytest的輸出結果
============================= test session starts =============================
collecting ... collected 3 items
test_calc.py::test_calculator_add[2-3-5] PASSED [ 33%]
test_calc.py::test_calculator_add[0-0-0] PASSED [ 66%]
test_calc.py::test_calculator_add[-1-1-0] PASSED [100%]
============================== 3 passed in 0.01s ==============================
下面是Unittest的輸出結果
============================= test session starts =============================
collecting ... collected 1 item
u.py::TestCalculator::test_calculator_add PASSED [100%]
============================== 1 passed in 0.01s ==============================
對比發現,pytest會輸出詳細的結果, 而unittest給出的是整體的判斷。 所以,從友好性上來說也是Pytest更勝一籌。
Pytest能夠自動發現測試用例,這意味著我們不需要手動編寫程式碼來標識哪些測試用例應該被執行。而Unittest則需要在指令碼中手動指定測試用例的執行順序和執行方式。
Pytest具有豐富的外掛和擴充套件,可以用於增強測試框架的功能。而Unittest則相對簡單,沒有Pytest那樣多的擴充套件。
在執行速度方面,Pytest比Unittest更快。這是因為Pytest能夠並行執行測試用例,而Unittest則只能按照順序依次執行測試用例。
Pytest和Unittest都能夠生成測試報告,但是Pytest的測試報告更加友好和易讀。Pytest的測試報告包含了測試用例的執行結果、時間、失敗資訊等,而Unittest的測試報告則相對簡單。
Pytest擁有一個龐大的社群支援,因此在使用Pytest時,可以輕鬆地找到相關的檔案和解決方案。相比之下,Unittest的社群支援相對較小。
總的來說,Pytest比Unittest更加靈活、簡單,並且具有更多的擴充套件。如果你想要快速編寫測試用例並且需要更多的擴充套件功能,那麼Pytest會是更好的選擇。但是如果你需要更多的控制和精細化的測試,那麼Unittest可能更加適合你。
到此這篇關於詳解Python中Pytest和Unittest的區別的文章就介紹到這了,更多相關Python Pytest Unittest內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45