<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
pytest最大的優點之一就是它非常靈活。
它可以將複雜的測試需求簡化為更簡單和有組織的函數,然後這些函數可以根據自身的需求去依賴別的函數。
fixtures可以呼叫別的fixtures正是靈活性的體現之一。
直接看一個簡單範例:
import pytest # Arrange @pytest.fixture def first_entry(): # 這是一個fixture函數,返回值:"a" return "a" # Arrange @pytest.fixture def order(first_entry): # 這是另一個fixture函數,請求了上一個fixture函數first_entry(), # 並且把first_entry()的返回值,放進了列表[]裡,最後返回 return [first_entry] def test_string(order): # Act # 測試函數中請求了第二個fixture函數order,可以拿到返回的[] order.append("b") # Assert assert order == ["a", "b"]
可以看到,pytest中的某個fixture請求別的fixture,就像測試函數請求fixture一樣,所有的請求規則都適用。
同樣,如果這些事情換我們自己來做的話,應該是下面這樣子:
def first_entry(): return "a" def order(first_entry): return [first_entry] def test_string(order): # Act order.append("b") # Assert assert order == ["a", "b"] entry = first_entry() the_list = order(first_entry=entry) test_string(order=the_list)
pytest中的fixtures還可以讓我們像使用普通函數一樣,能夠定義反覆重用的通用setup步驟。
兩個不同的測試函數可以請求相同的fixture,每個測試函數都會獲得該fixture的各自結果。
這樣的優點就是,確保不同的測試函數之間不會相互影響。
我們可以使用這種機制來確保每個測試函數都獲得各自新的、乾淨的、一致的資料。
import pytest # Arrange @pytest.fixture def first_entry(): return "a" # Arrange @pytest.fixture def order(first_entry): return [first_entry] def test_string(order): # Act order.append("b") # Assert assert order == ["a", "b"] def test_int(order): # Act order.append(2) # Assert assert order == ["a", 2]
從程式碼可以看出,fixture函數order
雖然先後被兩個測試函數呼叫,但是每次被呼叫給出的結果都是一樣的。並不會因為在測試函數test_string
中,進行了order.append("b")
後,就影響了order
在測試函數test_int
中的返回值。
同樣,這些事情換成我們自己來做,那就是這樣的:
def first_entry(): return "a" def order(first_entry): return [first_entry] def test_string(order): # Act order.append("b") # Assert assert order == ["a", "b"] def test_int(order): # Act order.append(2) # Assert assert order == ["a", 2] entry = first_entry() the_list = order(first_entry=entry) test_string(order=the_list) entry = first_entry() the_list = order(first_entry=entry) test_int(order=the_list)
接下來,繼續跟著官方檔案解讀fixtures的特點:一次請求多個fixtures、fixtures被多次請求。
以上就是pytest官方檔案解讀fixtures呼叫fixtures及fixture複用性 的詳細內容,更多關於pytest fixtures呼叫複用性的資料請關注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