繁体   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