py.testを使用して機能テストフレームワークを構築していますので、実行するテストを正確に指定する必要があります。私は動的テストコレクションの美しさを理解していますが、最初にテスト環境の健全性チェックを実行してから、その後に私の回帰テストを実行することができます。他の目的のために使用されているこれらのセットのテストを排除するものではありません。py.testでテストスイート(任意のテストコレクション)を実行
テストスイートは、Jenkinsのビルドプロジェクトに関連付けられます。私はosx、python 2.7.3、py.test 2.3.4を使用しています。
だから私は、次のようなテストケースがあります。
# sample_unittest.py
import unittest, pytest
class TestClass(unittest.TestCase):
def setUp(self):
self.testdata = ['apple', 'pear', 'berry']
def test_first(self):
assert 'apple' in self.testdata
def test_second(self):
assert 'pear' in self.testdata
def tearDown(self):
self.testdata = []
def suite():
suite = unittest.TestSuite()
suite.addTest(TestClass('test_first'))
return suite
if __name__ == '__main__':
unittest.TextTestRunner(verbosity=2).run(suite())
をそして私はこのようなテストスイートがあります。私はスイートに対するコマンドラインから次を実行した場合
# suite_regression.py
import unittest, pytest
import functionaltests.sample_unittest as sample_unittest
# set up the imported tests
suite_sample_unittest = sample_unittest.suite()
# create this test suite
suite = unittest.TestSuite()
suite.addTest(suite_sample_unittest)
# run the suite
unittest.TextTestRunner(verbosity=2).run(suite)
を、 test_firstが実行されます(ただし、py.testが提供する追加情報はありません)。
python functionaltests/suite_regressi on.py -v
私はスイートに対して次のコマンドを実行した場合、0テストが収集されます:私が実行している場合は、次の
py.test functionaltests/suite_regression.py
を
py.test functionaltests/sample_unittest.py -v
:テストケース、test_firstとtest_second実行に対する
py.testキーワードを使用すると、テストをスイートに編成する方法がわかりません。テストケースをフォルダ構造に配置し、フォルダオプションを指定してpy.testを実行しても、機能領域別にテストを整理することはできません。
だから私の質問:
- は、再利用可能な形式でのテストの任意のグループを指定するためのpy.testメカニズムはありますか?
- py.testからunittest.TestSuiteを使用する方法はありますか?
EDIT: だから私は、任意のラベルで私にフラグテスト機能と試験方法をすることができますされ、py.testマーカーを試し、その後、実行時にそのラベルをフィルタリング。
# conftest.py
import pytest
# set up custom markers
regression = pytest.mark.NAME
health = pytest.mark.NAME
そして、私の更新されたテストケース:
# sample_unittest.py
import unittest, pytest
class TestClass(unittest.TestCase):
def setUp(self):
self.testdata = ['apple', 'pear', 'berry']
@pytest.mark.healthcheck
@pytest.mark.regression
def test_first(self):
assert 'apple' in self.testdata
@pytest.mark.regression
def test_second(self):
assert 'pear' in self.testdata
def tearDown(self):
self.testdata = []
def suite():
suite = unittest.TestSuite()
suite.addTest(TestClass('test_first'))
return suite
if __name__ == '__main__':
unittest.TextTestRunner(verbosity=2).run(suite())
だから、次のコマンドを実行すると、収集しtest_first実行します:
functionaltests/sample_unittest py.test。PY -v -mヘルス
そして、これが収集しtest_firstとtest_second実行します:
py.test functionaltests/sample_unittest.py -v -m回帰
だから、戻って私に質問:マーカーは部分的な解決策ですが、私はまだ収集されたマーク付きテストの実行を制御する方法がありません。
*「収集されたマークされたテストの実行を制御する方法がない」とはどういう意味ですか?オーダー? –
はい、任意の順序で実行を制御し、収集されたテストのデフォルトの順序には依存しません。 – sophe