2017-01-23 10 views
0

同じメソッドを共有する一連のPython単体テストを実行したいと思います。しかし、テストのサブセットには、より大きく、より特定の変数セットが必要です。これを実現するための一つの方法は、補助関数を定義し、「より具体的な」テストで毎回それを呼び出すことです:Pytestフィクスチャで追加のインスタンス変数を定義する方法

import unittest 

class TestFixtures(unittest.TestCase): 
    def setUp(self): 
     self.a = 1 

    def additional_setup(self): 
     self.b = 1 

    def test_check_value(self):   # Ordinary test 
     self.assertEqual(self.a, 1) 

    def test_add_variables(self):  # More specific test requiring 'self.b' to be defined 
     self.additional_setup() 
     self.assertEqual(self.a + self.b, 2) 

if __name__ == "__main__": 
    unittest.main() 

それは、これはPytest fixturesを使用して、よりエレガントに行うことができるように私には思われるが、例のどれも私は、従来のsetUpメソッドと組み合わせて使用​​器具を見ました。 Pytestのフィクスチャを使って追加の変数を定義するにはどうすればよいですか?私は実際に単に治具を使用して、後のテストケースで使用する変数を定義することができていない、これまで

を試してみた何

。例えば、

import pytest 
import unittest 

class TestFixtures(unittest.TestCase): 
    @pytest.fixture 
    def additional_setup_fixture(): 
     b = 1 

    def test_use_fixtures(additional_setup_fixture): 
     print b 

if __name__ == "__main__": 
    unittest.main() 

は、NameError: global name 'b' is not defined.を生成する。 Pytestのフィクスチャでテスト(ローカル変数またはインスタンス変数の作成)で使用する変数を定義するにはどうすればよいですか?ここ

答えて

関連する問題