Python - 如何从不同的目录导入类以进行单元测试

时间:2017-04-24 04:33:12

标签: python-2.7

这个问题已被问了一百次,但我见过的每一个解决方案对我都不起作用,而且我非常沮丧,所以这就是101。

给出项目目录:

project/
  src/
    __init__.py
    student.py
  test/
    __init__.py
    student_test.py

我的student.py文件:

class Student:
  def __init__(self, name, age):
   self.full_name = name
   self.age = age

我的student_test.py文件:

from nose.tools import *
import src
from src import Student

def test_basic():
  print "I RAN!"

def test_student():
  s = Student("Steve", 42)
  assert s.age == 42

我收到以下错误:

======================================================================
ERROR: Failure: ImportError (cannot import name Student)
----------------------------------------------------------------------
    from src import Student
ImportError: cannot import name Student

我尝试过导入yada yada的变体并将src目录添加到路径中,但似乎没有任何效果。 WTF我做错了吗?

1 个答案:

答案 0 :(得分:1)

如果您与此目录结构相关联,则可以使用以下解决方案来运行测试。

from nose.tools import *
import sys
sys.path.insert(0, '/Users/daino3/Workspace/student-project/src') # the absolute path of /src directory
from student import Student

def test_basic():
  print "I RAN!"

def test_student():
  s = Student("Steve", 42)
  assert s.age == 42

test_basic()
test_student()

或者,将测试放在与源相同的目录中,然后只需from student import Student