-
Notifications
You must be signed in to change notification settings - Fork 5
テストの実行方法と書き方
tadataku-lab edited this page Nov 7, 2018
·
2 revisions
- すべてのテストを実行
python setup.py test
tests/test_all.py
で定義されているsuite()
が呼び出されて追加されているテストが全て実行されます.
- ファイルごとにテストを実行
python -m unittest tests.test_<hoge>
tests/test_<hoge>.py
のファイルのテストをすべて実行します.
例:python -m unittest tests.test_gpeg
- メソッドごとにテストする
python -m unittest tests.test_<hoge>.Test_<Fuga>.test_<piyo>
tests/test_<hoge>.py
のファイルのTest_<Fuga>
クラスのtest_<piyo>
メソッドのテストを実行します.
例:python -m unittest tests.test_gpeg.Test_GPEG.test_math
- 詳しいテスト内容を見る
python -m unittest -v tests.<hogehoge>
-v オプションをつけることでどんなテストを実行したか詳しく表示します.
例: python -m unittest -v tests.test_gpeg
その他のunittestの機能についてはコチラ
テストはtests/
に書きます.
ファイル名はtest_<hoge>.py
が分かりやすいかと思います.
import unittest # unittest
import tests # __init__.pyを読んでexTestが使えるようになる
from pegpy.gparser.gnez import *
from pathlib import Path
#unittest.TestCaseを継承して宣言
class TestGPEG(unittest.TestCase):
# unittestではtest_<fuga>のメソッド名が実行対象のメソッドになる
def test_math(self):
g = Grammar("math")
g.load('math.tpeg')
#構文木のテストをしたい場合はloadした後に追加すれば良い
g.example('Expression,Int', '123', "[#Int '123']")
g.example('Expression', '1+2*3', "[#Infix left=[#Int '1'] name=[# '+'] right=[#Infix left=[#Int '2'] name=[# '*'] right=[#Int '3']]]")
# Grammarに含まれるexampleをすべて実行する
self.exTest(g, gnez)
test_all.py
はtests/
のすべてのテストを実行するためのファイルです.
import unittest
from test_gpeg import TestGPEG
from test_npeg import TestNPEG
def suite():
suite = unittest.TestSuite()
suite.addTests(unittest.makeSuite(TestGPEG))
suite.addTests(unittest.makeSuite(TestNPEG))
#ここにテストを追加しましょう
return suite
python -m setup.py test
で追加されているテストが走ります.
テストが完成したら追加しておきましょう.