Python - Nosetest 返回名称 *class* 未在多个文件中的一个文件中定义
Python - Nosetest returning name *class* not defined on only one file of many
我正在尝试使用 nosetests 测试一组 python 文件,并将 运行 转换为 "NameError: name 'Sentence' not defined"(注意句子是 class 的名称,我想在 a 文件中测试)。对于正在测试的其他 files/classes,我没有收到此错误,而且似乎没有任何循环依赖问题。
此处的错误详细信息:
ex48 $ nosestests
......E
======================================================================
ERROR: Failure: NameError (name 'Sentence' is not defined)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/usr/local/lib/python2.7/site-packages/nose/loader.py", line 418, in loadTestsFromName
addr.filename, addr.module)
File "/usr/local/lib/python2.7/site-packages/nose/importer.py", line 47, in importFromPath
return self.importFromDir(dir_path, fqname)
File "/usr/local/lib/python2.7/site-packages/nose/importer.py", line 94, in importFromDir
mod = load_module(part_fqname, fh, filename, desc)
File "/Users/valentinblehaut/LearnPyth/ex48/tests/parser_tests.py", line 6, in <module>
stest = Sentence()
NameError: name 'Sentence' is not defined
----------------------------------------------------------------------
Ran 7 tests in 0.007s
FAILED (errors=1)
这是我的文件夹结构供参考,以及测试(parser_tests.py)和测试(parser.py)文件:
文件夹结构:
+ ex48
+ bin
+ docs
- lexicon.py
- parser.py
- setup.py
+ tests
- __init__.py
- lexicon_tests.py
- parser_tests.py
parser.py 文件:
class Sentence(object):
def __init__(self, subject, verb, object):
self.subject = subject[1]
self.verb = verb[1]
self.object = object[1]
parser.py 的测试脚本:
from nose.tools import *
from parser import *
# first create an instance of Sentence class called stest
stest = Sentence()
def test_Sentence():
assert_equal(stest.subject, "Hi")
assert_equal(stest.verb, "Hello")
assert_equal(stest.object, "Howdy")
我也尝试过仅 parser.py 测试:
ex48 $ nostests parser.py
这 returns 相同的 NameError 消息。
对于任何 formatting/convention 错误提前致歉,请让我知道我需要为以后的任何帖子修复的任何问题。
parser.py 可能会导致冲突,因为 python 包具有相同的名称,您可以将 parser.py 替换为其他名称并在测试脚本导入中更新。
我正在尝试使用 nosetests 测试一组 python 文件,并将 运行 转换为 "NameError: name 'Sentence' not defined"(注意句子是 class 的名称,我想在 a 文件中测试)。对于正在测试的其他 files/classes,我没有收到此错误,而且似乎没有任何循环依赖问题。
此处的错误详细信息:
ex48 $ nosestests
......E
======================================================================
ERROR: Failure: NameError (name 'Sentence' is not defined)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/usr/local/lib/python2.7/site-packages/nose/loader.py", line 418, in loadTestsFromName
addr.filename, addr.module)
File "/usr/local/lib/python2.7/site-packages/nose/importer.py", line 47, in importFromPath
return self.importFromDir(dir_path, fqname)
File "/usr/local/lib/python2.7/site-packages/nose/importer.py", line 94, in importFromDir
mod = load_module(part_fqname, fh, filename, desc)
File "/Users/valentinblehaut/LearnPyth/ex48/tests/parser_tests.py", line 6, in <module>
stest = Sentence()
NameError: name 'Sentence' is not defined
----------------------------------------------------------------------
Ran 7 tests in 0.007s
FAILED (errors=1)
这是我的文件夹结构供参考,以及测试(parser_tests.py)和测试(parser.py)文件:
文件夹结构:
+ ex48
+ bin
+ docs
- lexicon.py
- parser.py
- setup.py
+ tests
- __init__.py
- lexicon_tests.py
- parser_tests.py
parser.py 文件:
class Sentence(object):
def __init__(self, subject, verb, object):
self.subject = subject[1]
self.verb = verb[1]
self.object = object[1]
parser.py 的测试脚本:
from nose.tools import *
from parser import *
# first create an instance of Sentence class called stest
stest = Sentence()
def test_Sentence():
assert_equal(stest.subject, "Hi")
assert_equal(stest.verb, "Hello")
assert_equal(stest.object, "Howdy")
我也尝试过仅 parser.py 测试:
ex48 $ nostests parser.py
这 returns 相同的 NameError 消息。
对于任何 formatting/convention 错误提前致歉,请让我知道我需要为以后的任何帖子修复的任何问题。
parser.py 可能会导致冲突,因为 python 包具有相同的名称,您可以将 parser.py 替换为其他名称并在测试脚本导入中更新。