我从上到下搜索了这个网站,但还没有找到一种方法来真正实现我想要的Python3x.这是一个简单的玩具应用程序,所以我想我可以在asserts中编写一些简单的测试用例,并就此结束.它确实会生成报告,所以我希望确保我的代码在发生更改时不会做任何不可靠的事情.

我目前的目录 struct 是:(仅包含相关部分)

project
  -model
     __init__.py
     my_file.py
     -test
       my_file_test.py

我在拿我的测试文件时非常痛苦.py导入我的_文件.皮耶.

就像我说的.我从上到下搜索了这个网站,没有找到有效的解决方案.我的Python版本是3.2.3,运行在Fedora 17上.

Previously tried attempts: https://stackoverflow.com/questions/5078590/dynamic-imports-relative-imports-in-python-3 Importing modules from parent folder Can anyone explain python's relative imports? How to accomplish relative import in python

几乎在每次try 中,我都会遇到以下错误:

ImportError:没有名为*

这是怎么回事.我已经在网上试过了所有被接受的答案.不是在这里做什么花哨的事,而是作为一个.NET/Java/Ruby程序员这被证明是直觉的绝对定义.

编辑:如果重要的话,我try 在REPL中加载我试图导入的类,我得到以下结果:

>>> import datafileclass
>>> datafileclass.methods
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
>>> x = datafileclass('sample_data/sample_input.csv')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'module' object is not callable

如果重要的话...我知道类中的功能可以正常工作,但我无法导入它,这导致现在无法进行测试.future 肯定会引发整合问题.(改名保护无辜)

推荐答案

按如下方式构造代码:

project
  -model
    __init__.py
    my_file.py
  -tests
    __init__.py
    test_my_file.py

重要的是,tests目录也应该是一个模块目录(其中有一个空的__init__.py文件).

然后在test_my_文件中.py使用from model import my_file,并从顶部目录运行python -m tests.test_my_file.这是将test_my_file作为一个模块调用,这将导致Python设置其导入路径,以包含顶层.

更好的是,您可以使用pytest或nose,运行py.test将自动获取测试.

我意识到这并不能回答你的问题,但对你来说,使用Python标准实践要比反对它们容易得多.这意味着在自己的顶层目录中使用测试来构建项目.

Python-3.x相关问答推荐

我想判断df_entry_log[AM_PM],并根据测试填充列

将自动文本转换为 DataFrame

在 python 中使用正则表达式在行尾查找特定元素

过滤并获取数据框中条件之间的行

如何在Pandas 中按条件计算分组?

XPATH:使用 .find_elements_by_xpath 为未知数量的 xpath 输入值

在判断列表变量时如何判断特定列的值并分配加权整数值

ImportError:无法从jinja2导入名称escape

为什么 Python 枚举中的可变值是同一个对象?

python 3中的SQLAlchemy ER图

django rest框架中的save()、create()和update()有什么区别?

无法在 macOS 上的 Anaconda3 python3.6 上安装 OpenCV3

日志(log)模块不适用于 Python3

Seaborn 热图 colored颜色 条标签作为百分比

如何使我的课程在 Python 中非常可打印?

Anaconda 中的依赖项和包冲突?

登录csv文件的正确方法是什么?

AttributeError:系列对象没有属性iterrows

如何找出从哪个模块导入名称?

Pyodbc:登录超时错误