[英]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.