簡體   English   中英

如何在Python中導入文件?

[英]How do I import files in Python?

我正在嘗試使用pytest來檢查功能-這是我的代碼:

# src/return_self.py
def return_self(n):
    return n


# tests/return_self_test.py
import pytest

def test_1():
    value = return_self(1)
    assert value == 1

如何在src文件中進行要求,以便可以使用pytest對其進行pytest 我已經嘗試了幾件事:

1. import return_self
2. from src.return_self import *
3. import sys
   sys.path.append('../src')
4. import imp
   return_self = imp.load_source('return_self', '/source/return_self.py')

我也嘗試過在根目錄和src目錄中使用__init__.py文件和不使用__init__.py文件的情況。 但是每次,我都會在錯誤E ModuleNotFoundError: No module named 'return_self'上得到一些變化E ModuleNotFoundError: No module named 'return_self' 我該如何要求我的檔案?

您可以嘗試以下方法:

# tests/return_self_test.py

import os
import sys
import pytest

sys.path.insert(1, os.path.join(sys.path[0], '..'))

from src.return_self import return_self

def test_1():
    value = return_self(1)
    assert value == 1

首先,您必須檢查src /和tests /是否在同一目錄中,我檢查了在return_self_test.py導入return_self的函數,這是這樣的:

Testpy使用test_ [prefix]搜索文件,因此我建議將return_self_test.py更改為test_return_self.py

# src/return_self.py
def return_self(n):
    return n


# tests/test_return_self.py
import return_self

def test_1():
    value = return_self.return_self(1)
    assert value == 1

最后,使用以下命令在cmd(正確的路徑)或Pycharm終端中進行測試: py.test -vvoila 完成 (:

我會建議您使用setuptools方法( 這可以使您的軟件包可分發:D

項目文件的結構:

.
├── sample
│   ├── __init__.py
│   └── return_self.py
├── setup.cfg
├── setup.py
└── tests
    └── test_return_self.py

其中sample/目錄與軟件包名稱匹配,並且還必須包含源。

最小的setup.py文件內容:

from setuptools import setup

setup(
    setup_requires=['pytest-runner'],
    tests_require=['pytest'],
    name='sample'
)

在這里,我們正在配置我們的測試環境(您可以擴展tests_require變量以包含更多測試需求)。

setup.cfg文件內容:

[aliases]
test=pytest

在這里,我們指定我們要在開發人員每次執行時運行pytest命令: python setup.py test

測試/ test_return_self.py

from pytest import *

from sample.return_self import return_self

def test_return_self():
     assert return_self(4) == 4

樣品/ return_self.py

def return_self(n):
    return n

因此,下一步是運行:

python setup.py develop

使您的軟件包可用(在運行測試時)。 如果您遇到權限拒絕問題,請執行以下操作:將--user選項附加到上一個命令中,以指示python您想在沒有root權限的情況下使用該軟件包-簡而言之,該軟件包將安裝在userland目錄中。

最后使用以下命令運行測試:

python setup.py test

筆記:

  • 通過使用這種方法,您將能夠即時更改項目代碼( python setup.py develop只需要運行一次)
  • 沒有難看的語句將源目錄注入當前的python路徑。

參考文獻:

與setuptools / python setup.py test / pytest-runner集成

使用Setuptools構建和分發軟件包

暫無
暫無

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

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