从不同目录导入时的unittest错误

问题描述 投票:0回答:2

我一直在尝试在我的最新项目中使用unittest,但我在进口方面遇到了一些困难。

我已经成功导入了我想要成功测试的脚本,但是这个脚本在自己的导入时失败了。

我的文件夹结构如下:

Project
 |
 +-- src
 |   |
 |   +-- __init__.py
 |   +-- script1.py
 |   +-- script2.py
 |
 +-- test
  |  |
  |  +-- __init__.py
  |  +-- test_script1.py

script1.py包含:

#!/usr/bin/env python3.6
# -*- encoding: utf-8 -*-
"""
    This is the script I want to run tests on
"""
import networkx as nx  # works just fine
from script2 import blablabla  # does not work when called from unittest

这就是我的test_script1.py的样子:

#!/usr/bin/env python3.6
# -*- encoding: utf-8 -*-

import unittest
import networkx as nx
import src.script1

当我尝试使用此命令~/Project$ python -m unittest discover运行测试时,我得到一个ModuleNotFoundError: No module named 'script2'

如果我将script1.py更改为from .script2 import blablabla然后单元测试运行得很好但单独使用script1.py(不使用unittest)不再是因为它找不到script2

知道如何解决这个问题吗?

python python-3.x python-import python-unittest
2个回答
1
投票

__init__.py目录中删除tests,并保留其余代码。在那里有一个人实际上气馁:https://stackoverflow.com/a/30167059/769971

在本地试用它可以解决这个问题。

编辑:我还应该提一下,就像链接的答案一样,你必须修改你的python路径以包含你正在测试的模块。那,或者使用像nose这样的东西来为你解决这个问题。


0
投票

另一种方法是按原样保留导入和包,但只需在运行测试之前设置PYTHONPATH

PYTHONPATH=$PYTHONPATH:src python -m unittest discover
© www.soinside.com 2019 - 2024. All rights reserved.