網(wǎng)站首頁 編程語言 正文
1.背景
最近使用Pytest
中的fixture
和conftest
時,遇到需要在conftest中的setup和teardown方法里傳遞參數(shù)。這里記錄下幾種實現(xiàn)的方式。
2.fixture中參數(shù)傳遞的幾種方式
1)fixture中的函數(shù)返回
conftest.py @pytest.fixture(scope="class") def setup_func(): ? ? test_data = [{"k1": "v1"}, {"k2": "v2"}] ? ? return test_data testcase.py def test_func(setup_func) ? ? print(setup_func)
結(jié)果:
執(zhí)行一條用例,輸出:[{"k1": "v1"}, {"k2": "v2"}]
2)與@pytest.mark.parametrize的結(jié)合
conftest.py @pytest.fixture(scope="class") def setup_func(request): ? ? print(request.param) ? ? return request.param testcase.py test_data = [{"k1": "v1"}, {"k2": "v2"}] @pytest.mark.parametrize('setup_func', test_data, indirect=True) def test_func(setup_func) ? ? setup_func
結(jié)果:
執(zhí)行兩條用例,分別輸出:{"k1": "v1"}, {"k2": "v2"}
注:
當(dāng) indirect=False 時,“setup_func”被當(dāng)成普通變量;?
當(dāng) indirect=True 時,“setup_func”被當(dāng)成函數(shù)執(zhí)行,且 “test_data”作為函數(shù)中的參數(shù)傳遞
3)fixture中的方法嵌套傳遞
confitest.py @pytest.fixture(scope="class") def setup_func1(): ? ? test_data1 = [{"k1": "v1"}, {"k2": "v2"}] ? ? return test_data1 @pytest.fixture(scope="class") def setup_func2(setup_func1): ? ? a = setup_func1 ? ? b = [{"k11": "v11"}, {"k22": "v22"}] ? ? return (a, b) testcase.py def test_aaa(self, setup_func2): ? ? ? ? print(setup_func2)
結(jié)果:
執(zhí)行一條用例,輸出:([{'k1': 'v1'}, {'k2': 'v2'}], [{'k11': 'v11'}, {'k22': 'v22'}])
4)測試方法中產(chǎn)生數(shù)據(jù)后,直接調(diào)用teardown
@python.fixture(scope="class") def teardown_func(): ? ? def _teardown_func(param1, param2): ? ? ? ? func() ? ? return _teardown_func
原文鏈接:https://blog.csdn.net/aduocd/article/details/124106135
相關(guān)推薦
- 2022-02-12 Flutter項目中有些依賴不支持64位的library的解決方式
- 2022-11-27 MobLink?Android?快速集成指南_Android
- 2022-05-04 詳解Python使用apscheduler定時執(zhí)行任務(wù)_python
- 2022-11-23 GoLang?strings.Builder底層實現(xiàn)方法詳解_Golang
- 2022-03-20 C#中實現(xiàn)PriorityQueue優(yōu)先級隊列的代碼_C#教程
- 2022-06-13 matplotlib圖形整合之多個子圖繪制的實例代碼_python
- 2022-06-19 教你cmd?bat文件中調(diào)用另一個bat文件的方法_DOS/BAT
- 2024-01-30 深入理解Scrapy中XPath的`following-sibling`選擇器
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支