我知道py.test如何發現要運行的測試,但我不知道如何使測試引用包含要測試的代碼的文件。pytest如何查找要測試的文件?
我的項目是這樣的:
arith.py
tests/
test_airth.py
在我的項目的根目錄下,我有一個文件arith.py
與
def plus(x, y):
return x + y
在tests/test_arith.py
我有一個文件
import arith
def test_plus():
assert arith.plus(3, 5) == 8
當我在項目的根目錄下運行,
pytest
它發現我的測試文件,因爲我遵循測試發現規則。但是pytest與
導入錯誤答覆,同時導入測試模塊的測試/ test_arith.py」
我跑從項目的根pytest
,那麼爲什麼它不喜歡我的進口?它想要在tests
目錄中找到我正在測試的文件!
如何正確設置導入,使我的測試文件在tests/
目錄下,可以看到項目根目錄下的測試文件? (pytest文檔中的示例似乎沒有做任何特別的事情......也許測試與被測文件位於同一目錄中?它們很詳細地描述了測試發現,但是我一定錯過了如何設置測試,以便它們可以看到他們正在測試的代碼)
不錯。有趣的是,我試圖分發的是一個單獨的文件,客戶通過簡單地說'import thething'來使用它。我已經構建了大型多文件應用程序,其中'pytest'是一個部分,並且測試目錄是'main','models','views',當然還有'env'的兄弟。以這種方式打包時,客戶會說「從模型導入任何」或「導入模型」。爲了得到我想要的東西,我想我不得不'只有'thething.py',而是將'something /''tests'的兄弟放在'something/__ init __。py'中。它只有幾百行...... –
如果你想提供你想要人們導入的東西,那麼你*確實*想創建一個包 - 即使它只是一個文件。你仍然可以用'setup.py'來做到這一點。如果你採取這種方法,你可以在同一個文件夾中有'something.py'和'tests /'。 –