簡體   English   中英

除了 pytest 的測試 package 之外,conftest.py 文件是否可以放在另一個 package 中?

[英]Can the conftest.py file be put in another package aside the tests package for pytest?

問題:
是否可以將conftest.py文件放入 Test package 旁邊的另一個 package 中,如下結構?

描述
項目結構如下:
--------------------------------------

GUI_pytest
  - C_lib
      --__init__.py
      -- conftest.py
  - G_test<br/>
      --__init__.py
      -- test_2.py

Source_Root: GUI_pytest
conftest.py: GUI_pytest/C_lib(package)
test_2.py(測試文件): GUI_pytest/G_test(package)

GUI_pytest/C_lib/conftest.py
有一個夾具 function 作為def a()

測試用例: GUI_pytest/G_test/test_2.py使用fixture作為def test_2(a)

我想將conftest.pytest_case().py拆分為C_lib packageG_test package

但是 pytest 似乎無法獲取 conftest.py 文件錯誤找不到夾具 function a使用def test_2(a)

先感謝您
作為初學者,任何事情都可以幫助解決這個問題。

答案是否定的,如果沒有變通辦法,這是不可能的,我建議不要這樣做。

如果你使用一個框架,你應該使用框架提供的約定——這使得使用更容易,並且你不會因為一些框架不期望的用法而遇到問題。 這里的框架是指pytest ,它不僅僅是一個可執行文件,因為它提供(並期望)一定的基礎設施(當然可以更好地記錄......)。 您可以在 SO 問題的答案中找到更多信息在 pytest 中,conftest.py 文件的用途是什么? .

pytest使用conftest.py文件以分層方式為測試提供夾具、插件和掛鈎。
所以,比如說,你有這樣的結構:

tests
   test_a
       test_a1.py
       test_a2.py
   test_b
       test_b1.py
       test_b2.py   

其中test_a中的測試使用夾具local_fixturetest_b中的測試使用另一個夾具local_fixture ,所有測試都使用通用夾具common_fixture 最簡單的方法如下:

tests
   conftest.py -> contains common_fixture
   test_a
       conftest.py -> contains local_fixture for test_a...
       test_a1.py
       test_a2.py
   test_b
       conftest.py -> contains local_fixture for test_b...
       test_b1.py
       test_b2.py   

其他模塊提供的插件中也可以有conftest.py文件,所有這些裝置您可以直接使用而無需導入它們,或者做一些 PYTHONPATH 魔術。 您只需使用通用約定 go 而不是使用自己的約定即可使用該功能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM