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 替换为其他名称并在测试脚本导入中更新。