导入父目录进行简单测试

2024-06-26

我从上到下搜索了这个网站,但还没有找到一种方法来真正实现我在 Python3x 中想要的东西。这是一个简单的玩具应用程序,所以我想我可以在断言中编写一些简单的测试用例,然后就到此为止了。它确实会生成报告等,因此我想确保我的代码在更改时不会做任何奇怪的事情。

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

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

我很难让 my_file_test.py 导入 my_file.py。

就像我说过的。我从上到下搜索了该网站,但没有解决方案。我的 Python 版本是 3.2.3,在 Fedora 17 上运行。

之前尝试过的尝试:https://stackoverflow.com/questions/5078590/dynamic-imports-relative-imports-in-python-3 https://stackoverflow.com/questions/4655526/how-to-accomplish-this-relative-import-in-python 从父文件夹导入模块 https://stackoverflow.com/questions/714063/python-importing-modules-from-parent-folder 谁能解释一下 python 的相对导入? https://stackoverflow.com/questions/1918539/can-anyone-explain-pythons-relative-imports python中如何实现相对导入 https://stackoverflow.com/questions/4655526/how-to-accomplish-this-relative-import-in-python

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

导入错误:没有名为 * 的模块 或者 ValueError:尝试在非包中进行相对导入

这里发生了什么。我已经尝试过 SO 以及整个互联网上所有被接受的答案。这里没有做任何花哨的事情,但作为 .NET/Java/Ruby 程序员,这被证明是直观的绝对定义。

编辑:如果重要的话,我尝试加载我试图在 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

如果重要的话......我知道类中的功能有效,但我无法导入它,这导致现在无法测试。将来肯定会造成整合问题。 (为保护无辜者,化名) 在几周内获得本次库迭代所需的功能......任何帮助都可能有用。本来可以用 Ruby 完成,但客户希望将 Python 作为学习体验,


像这样构造你的代码:

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

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

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

更好的是,您可以使用 pytest 或鼻子,然后运行py.test将自动进行测试。

我意识到这并不能回答你的问题,但是对你来说,使用 Python 标准实践而不是反对它们会更容易。这意味着在自己的顶级目录中使用测试来构建您的项目。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

导入父目录进行简单测试 的相关文章

随机推荐

  • 将匹配的值传递给函数,并替换为返回值

    我如何让 Bash 匹配正则表达式 而不是用常量字符串替换值 而是将匹配的值传递给函数 然后从函数的返回值中获取要替换的值 像下面的伪代码一样 它替换了每一个匹配项 a d 具有相同的字符 但大写 function uppercase ec
  • 如何显示浏览器中发出的 API 请求的 symfony 分析器?

    我正在使用 Symfony2 FOSRest 捆绑包开发 REST api 我想知道是否有任何方法可以在开发模式下调用api app dev php 从浏览器 对应于Accept text html application xhtml xm
  • express.js less 编译器:无法工作

    app js app use express compiler src dirname public enable less app use express static dirname public 在我的玉观中 link rel sty
  • 如何在 Linux centos 上安装 SWIG [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我想在我的 Linux 服务器上安装 SWIG 来测试一些东西 怎么才能安装那个 你有几个选择 最简单的方法是检查 CentOS 存储库中的二进制包
  • Python 字符串格式 - 类型错误 - 格式字符串参数不足

    那么这个字符串有什么问题呢 我无法弄清楚为什么它说格式字符串没有足够的参数 我是 Python 新手 只是想弄清楚 编辑 这与建议的其他问题不同 另一个正在尝试做一些我什至没有涉及的疯狂数组事情 我只需要了解元组的基本概念以及字符串格式化的
  • 如何防止 gson 将整数转换为双精度数

    我的 json 中有整数 但我不希望 gson 将它们转换为双精度数 以下不起作用 Test public void keepsIntsAsIs String json id 1 quantity 2 name apple id 3 qua
  • 在 R/ggplot2 中将字符串转换为函数参数的最佳方法? [复制]

    这个问题在这里已经有答案了 我正在开发一个闪亮的应用程序 用户可以选择可以使用 ggplot2 绘制哪些变量 但是我完全不确定将字符串 即要绘制的变量的名称 转换为合适的函数参数的最佳方法 考虑以下非常人为的 有效的示例 df lt dat
  • 是否有 .NET API 可以返回给定路径的等效扩展路径字符串?

    在 NTFS 中 我可以在路径前加上前缀 字符序列 表示它是超过 260 个字符限制的路径 因此 文件系统将正确解释路径并避免引发PathTooLongException see http msdn microsoft com en us
  • 如何使用 C 中的 Banker's Rounding 将 double 舍入为 int

    我想编写一个函数 使用银行家的舍入方法将双精度数舍入为整数 将一半舍入为偶数 http en wikipedia org wiki Rounding Round half to even http en wikipedia org wiki
  • AsyncTask加载图像RecyclerView

    我正在尝试创建一个与该应用程序类似的应用程序 一个在回收视图中包含一些图像和描述 卡片视图 的应用程序 https lh5 ggpht com At pHbZqdzlgmAqY0jbiztDYIAts1wOYWGTOHibmFHuq8CFA
  • 如何使用 DirectoryStream.Filter 过滤隐藏文件

    我正在尝试使用 NIO 类过滤隐藏文件 当我在 Windows 10 上运行随附的代码时 我得到以下输出 Files c Documents and Settings c PerfLogs c Program Files c Program
  • OpenGL ES 2.0 只绘制一次对象

    首先我要说的是 很抱歉今天问了这么多问题 所以 我有一个圈子的课程 我有一个包含 3 个圆形实例的数组列表 每个实例都有不同的 x 坐标来绘制 不管出于什么原因 OpenGL ES 2 0 只绘制其中之一 尽管我调用所有这些来绘制 我检查了
  • 是否可以检测Android应用程序卸载?

    我的应用程序使用 Google 的 C2DM 推送通知 来通知用户朋友的新活动 一旦他们安装了应用程序 我就会向 C2DM 服务器注册设备并存储用户的电话号码 所以我知道用户正在使用我的应用程序 我可以向他 她发送推送通知 但是 如果用户卸
  • PHP:将“’”字符从 ISO-8859-1 转换为 UTF-8 时出现问题

    我在使用 PHP 将 ISO 8859 1 数据库内容转换为 UTF 8 时遇到一些问题 我正在运行以下代码来测试 Connect to a latin1 charset database and retrieve Georgia O Ke
  • 如何在聚合框架中按位置修改数组中的值

    假设有一个简单的文档 array a b c d 如何修改second值在聚合 With update这很简单 db collection updateOne set array 1 B gives array a B c d 在聚合框架中
  • Apache ReWrite 规则是否排除单个文件或文件类型?

    您能帮助我制定一条 Apache 规则来排除特定文件名或文件类型吗 这是我目前的规则 RewriteRule blog L RewriteRule crossdomain xml L Based on first response Rewr
  • AT命令用于接收自动短信通知

    我现在有 2 个 gprs gsm 调制解调器 其中一个是华为 另一个是 prolink 调制解调器 我通过 AT 命令发送或接收短信没有问题 但是 我尝试使用此命令 AT CNMI 接收自动通知 但无法使其正常工作 但当我尝试此命令时 调
  • 使用 Bash 显示进度指示器(旋转器)[重复]

    这个问题在这里已经有答案了 使用仅 bash 的脚本 如何提供 bash 进度指示器 例如 当我从 bash 运行命令时 当该命令正在执行时 让用户知道某些事情仍在发生 在这个使用 SCP 的示例中 我演示了如何获取进程 ID pid 然后
  • 无法在单 SPA 应用程序中启动微前端应用程序

    我在尝试在 Single SPA 应用程序中启动子应用程序时遇到错误 基本上 我正在尝试开发一种 util 应用程序 Single SPA 中的子应用程序 其中包含 Sockjs Stomp client 等 我删除了节点模块和 packa
  • 导入父目录进行简单测试

    我从上到下搜索了这个网站 但还没有找到一种方法来真正实现我在 Python3x 中想要的东西 这是一个简单的玩具应用程序 所以我想我可以在断言中编写一些简单的测试用例 然后就到此为止了 它确实会生成报告等 因此我想确保我的代码在更改时不会做