1

私はノーズでテストを書き込もうとしていますが、モジュールと関数のセットアップのロジックについて助けが必要です。

def setup_func():
    q_object = u'item'
    retry_in = 20

@with_setup(setup_func)
def test_set():
    assert q_object == u'item'

ノーズテストを実行すると、次のエラーが表示されます。

NameError: global name 'q_object' is not defined

では、テスト関数で q_object にアクセスするにはどうすればよいでしょうか? 特定のテストクラスで setup_module() からオブジェクトにアクセスするにはどうすればよいですか?

私はsetup_moduleを理解しました。

setup_module(module):
    module.item = u'item'

モジュールよりも、作成されたオブジェクト - アイテムを簡単に使用します。

4

2 に答える 2

2

このコードは鼻で私のために働いた:

両方の長所を取り入れています。スコープを保持するクラスと、デフォルトの unittest2 フレームワークよりもわずかにクリーンなテスト。

class TestSomething(object):

  def setup(self):
    self.q_object = u'item'

  def test_set(self):
    eq_(self.q_object, u'item')
于 2013-12-23T18:35:45.410 に答える
1

実際、テストでグローバル変数にアクセスしようとしています。したがって、コードは次のようになります。

q_object = None

def setup_func():
    global q_object
    q_object = u'item'

@with_setup(setup_func)
def test_set():
    global q_object
    assert q_object == u'item'

しかし、グローバル変数を使用するのは良い考えではありません。それらを回避できる別の方法を見つけてみてください。

テストクラスはあなたにぴったりだと思います

class ExampleTest(unittest.TestCase):
    def setUp(self):
        self.q_object = u'item'

    def test_a(self):
        assert self.q_object == u'item'

まだ完全ではありませんが (同じグローバル vars ソリューション)、少なくともクラス内にラップされています。

于 2012-12-19T12:35:02.067 に答える