擅长:python、mysql、java
<p>要总结的问题:</p>
<p>您具有以下项目结构:</p>
<pre><code>- sengtool_data_funnel (project root)
- tests
- test_networks
- test_json_networks.py
- example_EventsOfInterestColumnAggregate.json
- example_EventsOfInterestConcatenate.json
</code></pre>
<p>运行测试时,工作目录是<code>sengtool_data_funnel</code>,而不是{<cd2>},JSON文件就在这里。因此您遇到了异常。在</p>
<h2>为什么项目根目录是默认的工作目录</h2>
<p>通常在编写测试时,您会希望测试项目结构中的代码。Python将在工作目录中查找模块(当然还有已安装的包)。在</p>
<p>如果您的工作目录不是项目根目录,那么您可能会开始发现很难加载不在该目录中的任何模块(例如在父目录中)。即使是在同一目录中的模块也会有问题。这是因为绝对包结构不再与项目结构匹配。最后你可能会使用诸如修改<code>sys.path</code>之类的方法。在</p>
<p>这就是为什么默认工作目录是项目根目录,它应该保持这样。在</p>
<h2>你能做什么?在</h2>
<p>现在假设工作目录确实是项目根目录,我们有几个选项。在</p>
<p>首先,您可以简单地加载<code>sengtool_data_funnel/tests/test_networks/example_EventsOfInterestConcatenate.json</code>,而不是{<cd5>}</p>
<p>或者,可以加载与测试脚本相关的文件。Python为测试脚本定义<code>__file__</code>。i、 在这种情况下,<code>os.path.dirname(__file__)</code>是指向<code>sengtool_data_funnel/tests/test_networks</code>。您可以将脚本更改为:</p>
^{pr2}$
<p>这样做的好处是,如果你更改了你的工作目录,它仍然可以工作(尽管我不知道你为什么要这么做)。在</p>