Pythonでunittestに関する質問があります。たとえば、特定のapiエンドポイントを処理するドッキング・コンテナを設定したとしましょう(例:my_site/users/etc/etc/etc
というユーザー)。このコンテナのために分割されて処理されるかなり異なるレイヤーがあります。実際の呼び出しと応答、ロジックレイヤー、データレイヤーを処理するクラス。私は特定の呼び出しの周りのテストを書いてみたい(ちょうどステータスコードをチェックする)。setUpメソッドを継承するPython Unittest
与えられたエンドポイントのハンドラとして機能するクラスはたくさんあります。 1つにつき異なる設定が必要なことがいくつかありますが、それぞれがアプリケーションから継承し、そこからいくつかのメソッドを使用します。私はunittestのためにsetUp class
をやりたいので、毎回これを再確立する必要はありません。どんな助言も役に立ちます。今のところ私は主に、テストでは継承が悪い考えであることを主に見てきましたが、私はsetUpのためにこれを使いたいだけです。ここに例があります:
class SetUpClass(unittest.TestCase):
def setUp(self):
self._some_data = data_set.FirstOne()
self._another_data_set = data_set.SecondOne()
def get_app(self):
config = Config()
return Application(config,
first_one=self._some_data,
second_one=self._another_data_set)
class TestFirstHandler(SetUpClass, unittest.TestCase):
def setUp(self):
new_var = something
def tearDown(self):
pass
def test_this_handler(self):
# This specific handler needs the application to function
# but I don't want to define it in this test class
res = self.fetch('some_url/users')
self.assertEqual(res.code, 200)
class TestSecondHandler(SetUpClass, unittest.TestCase):
def setUp(self):
different_var_thats_specific_to_this_handler = something_else
def tearDown(self):
pass
def test_this_handler(self):
# This specific handler needs the application to function
# but I don't want to define it in this test class
res = self.fetch('some_url/users/account/?something_custom={}'.format('WOW'))
self.assertEqual(res.code, 200)
もう一度ありがとう!!
だからあなたの質問がされ、「私はテストケースから継承することは悪いことを聞いた、それは本当にある」:
ここではPython 3用のシンプルなバージョンですか? – syntonym
これは質問の一部です。もう1つは、それが悪くない場合、実際にセットアップクラスからどのように継承されるかです。私はそれが完了したことを見ていない。 –
これは悪いことに本当にコメントできませんが、すでにベースクラスから継承しています。しかし、毎回 'setUp'メソッドを上書きします。 'setUp'関数を拡張したいのであれば、スーパー関数、すなわち' def setUp(self):SetUpClass.setUp(self) 'を呼び出し、その後にあなたのコードを呼び出すべきです。 – syntonym