繁体   English   中英

Python Nosetests导入错误

[英]Python Nosetests Import Error

我正在尝试在Python上运行自动化测试,并且不断遇到导入错误。 我的目录层次结构如下:

TestingPractice
  - bin
  - README.txt
  - setup.py
  - TestingPractice
      - __init__.py
      - main.py
  - tests
      - __init__.py
      - test_main.py

现在,当我进入顶部TestingPractice并运行鼻子测试时,即使在导入TestingPractice.main时,也仍未声明在main.py中创建的方法。

main.py:

def total_hours(hours):
    sum = 0
    for hour in hours:
        sum += hour
    return sum

test_main.py:

# Test the hour computation. 
from nose.tools import *
import TestingPractice.main

def test_hours():
    to_test = [8,8,7,8] # 31
    assert_equal(total_hours(to_test), 31)

进行鼻子测试时:

/Documents/Developer/Python/TestingPractice/tests/test_main.py", line 7, in test_hours
    assert_equal(total_hours(to_test), 31)
NameError: global name 'total_hours' is not defined

我尝试了许多不同的导入路径,甚至是相对导入(这导致了相对导入错误),还尝试了导出PYTHONPATH =。 无济于事。

只需不要“ cd到TestingPractice”,而是停留在项目的根目录并从那里运行测试。

过去,我遇到了完全相同的问题,试图使所有测试用例都可以从测试目录运行,甚至可以从任何地方运行。 但是这样的要求通常是胡说八道,并且遵循一条规则: 从项目的根开始运行测试效果很好-实际上,它为所有测试代码和测试带来了清晰度,并且您会喜欢的。

出于某些奇怪的原因,我没有告诉Python如何导入该函数。 虽然有一些明显的解决方法,但我没有做到。

这里是:

在test_main.py中,我必须做:

from TestingPractice.main import total_hours

然后,在顶级TestingPractice的工作目录中,鼻子测试按预期进行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM