網(wǎng)站首頁 編程語言 正文
1.背景
最近使用Pytest
中的fixture
和conftest
時(shí),遇到需要在conftest中的setup和teardown方法里傳遞參數(shù)。這里記錄下幾種實(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 時(shí),“setup_func”被當(dāng)成普通變量;?
當(dāng) indirect=True 時(shí),“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)測(cè)試方法中產(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-08-29 GPU服務(wù)器的多用戶配置方法_服務(wù)器其它
- 2022-07-19 element-ui根據(jù)條件合并單元格
- 2022-07-12 Linux系統(tǒng)下的時(shí)區(qū)配置管理
- 2023-03-30 一鍵移除ButterKnife并替換為ViewBinding的舊項(xiàng)目拯救_Android
- 2022-07-10 ENOENT讀取文件報(bào)錯(cuò)(fs)
- 2022-08-02 C/C++詳解如何實(shí)現(xiàn)文件備份_C 語言
- 2023-03-15 Android?Studio?全局查找問題_Android
- 2022-10-23 C#使用Lazy<T>實(shí)現(xiàn)對(duì)客戶訂單的延遲加載_C#教程
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支