91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python五種常見的測試框架是什么

發布時間:2022-02-23 09:49:39 來源:億速云 閱讀:162 作者:iii 欄目:開發技術

本文小編為大家詳細介紹“python五種常見的測試框架是什么”,內容詳細,步驟清晰,細節處理妥當,希望這篇“python五種常見的測試框架是什么”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

一. unittest

unittest 和 JUnit類似,可以說是python的標準單元測試框架,所以有時也被人稱為 PyUnit。它使用起來和xUnit 家族其他成員類似。 用的人也比較多。兼容 python2 以及python3 。

個人比較喜歡用這個,主要之前用過JUnit,用這個上手就很快。而且屬于python自動集成,不用額外的安裝包,感覺是該有的都有了,用著方便。

官網示例:

按 Ctrl+C 復制代碼

import unittest

class TestStringMethods(unittest.TestCase):

def test_upper(self): self.assertEqual('foo'.upper(), 'FOO')

def test_isupper(self): self.assertTrue('FOO'.isupper()) self.assertFalse('Foo'.isupper())

def test_split(self): s = 'hello world' self.assertEqual(s.split(), ['hello', 'world']) # check that s.split fails when the separator is not a string with self.assertRaises(TypeError): s.split(2)

if name == 'main': unittest.main()

二. unittest2

unittest2 可以說是一個針對 unittest 測試框架新特性的補丁。它很大程度上和 unittest 都類似。然后還添加了一些 unittest 沒有的方法。

三. pytest

看了一下,pytest 文檔還是蠻詳細的。比較關注的一點是,pytest 直接可以通過 @pytest.mark.parametrize 進行參數化,而 unittest 則需要借助 DDT。

官網示例:

# content of test_sample.py
def inc(x):
   return x + 1

def test_answer():
   assert inc(3) == 5

執行如下:

$ pytest
======= test session starts ========
platform linux -- Python 3.x.y, pytest-3.x.y, py-1.x.y, pluggy-0.x.y
rootdir: $REGENDOC_TMPDIR, inifile:
collected 1 item

test_sample.py F

======= FAILURES ========
_______ test_answer ________

   def test_answer():
>       assert inc(3) == 5
E       assert 4 == 5
E        +  where 4 = inc(3)

test_sample.py:5: AssertionError
======= 1 failed in 0.12 seconds ========

四. nose

nose 擴展了 unittest,從而使得測試更容易。

一般可以用 unittest 方式寫用例,寫完之后用 nose 來執行。nose 的測試收集方式還是很方便的。

還有一個特定就是,nose 可以采用 @with_setup() 來定義方法的 setup 和 teardown。

官方示例:

def setup_func():
   "set up test fixtures"

def teardown_func():
   "tear down test fixtures"

@with_setup(setup_func, teardown_func)
def test():
   "test ..."

五. doctest

doctest 模塊會搜索那些看起來像交互式會話的 Python 代碼片段,然后嘗試執行并驗證結果。

doctest 中,如果要寫測試用例,只需要在寫在以 ''' '''包圍的文檔注釋即可,也就是可以被 doc 這個屬性引用到的地方。這點比較特別,跟其他單元測試框架都不一樣。但是我覺得這樣的話就注定了 doctest 不適合大型測試,因為做不到代碼和測試的分離。

import doctest

"""
This is the "example" module.

The example module supplies one function, factorial().  For example,

>>> factorial(5)
120
"""

def factorial(n):
   """Return the factorial of n, an exact integer >= 0.

   >>> [factorial(n) for n in range(6)]
   [1, 1, 2, 6, 24, 120]
   >>> factorial(30)
   265252859812191058636308480000000
   >>> factorial(-1)
   Traceback (most recent call last):
       ...
   ValueError: n must be >= 0

   Factorials of floats are OK, but the float must be an exact integer:
   >>> factorial(30.1)
   Traceback (most recent call last):
       ...
   ValueError: n must be exact integer
   >>> factorial(30.0)
   265252859812191058636308480000000

   It must also not be ridiculously large:
   >>> factorial(1e100)
   Traceback (most recent call last):
       ...
   OverflowError: n too large
   """

   import math
   if not n >= 0:
       raise ValueError("n must be >= 0")
   if math.floor(n) != n:
       raise ValueError("n must be exact integer")
   if n+1 == n:  # catch a value like 1e300
       raise OverflowError("n too large")
   result = 1
   factor = 2
   while factor <= n:
       result *= factor
       factor += 1
   return result


if __name__ == "__main__":
   doctest.testmod(verbose=True)

verbose 參數用于控制是否輸出詳細信息,默認為 False ,如果不寫,那么運行時不會輸出任何東西,除非測試 fail。

輸出如下:

Trying:
   [factorial(n) for n in range(6)]
Expecting:
   [1, 1, 2, 6, 24, 120]
ok
Trying:
   factorial(30)
Expecting:
   265252859812191058636308480000000
ok
Trying:
   factorial(-1)
Expecting:
   Traceback (most recent call last):
       ...
   ValueError: n must be >= 0
ok
Trying:
   factorial(30.1)
Expecting:
   Traceback (most recent call last):
       ...
   ValueError: n must be exact integer
ok
Trying:
   factorial(30.0)
Expecting:
   265252859812191058636308480000000
ok
Trying:
   factorial(1e100)
Expecting:
   Traceback (most recent call last):
       ...
   OverflowError: n too large
ok
1 items had no tests:
   __main__
1 items passed all tests:
  6 tests in __main__.factorial
6 tests in 2 items.
6 passed and 0 failed.
Test passed.

讀到這里,這篇“python五種常見的測試框架是什么”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

平武县| 浦江县| 花莲县| 贵港市| 体育| 东城区| 渭源县| 惠州市| 罗源县| 西乡县| 古田县| 轮台县| 寻乌县| 历史| 进贤县| 西昌市| 曲周县| 茂名市| 扶绥县| 申扎县| 芷江| 海宁市| 全南县| 琼海市| 娄底市| 县级市| 南投市| 民勤县| 托克逊县| 盐津县| 铜梁县| 梁山县| 长兴县| 定兴县| 山阳县| 黔江区| 齐齐哈尔市| 汾西县| 梁河县| 和平区| 永安市|