私はのテストを受けており、コール中にサイレントエラーが発生していないことを確認したいと思います。 残念ながらOpenGLのエラーハンドリングはあまり良くありません。 glGetError()
が他のものを返すかどうかテストしたいGL_NO_ERROR
TestCase
ごとに1回テストすれば十分です。すべてのテストメソッドの後にアサーションを追加するとよいでしょう。python unittestを使ってテストメソッドを実行した後で追加のアサートを追加するには?
を(I 92個の方法で手動で追加する必要はありません)私はアサートをtearDownClass(cls)
方法で行われ、tearDownClass
任意のテスト論理を行うべきではないので許容できない溶液を示す例示的スニペットを作っ。
テスト後に追加のアサートを追加するにはどうすればよいですか?
コメントのある行には、私が達成できないことが示されます。
import struct
import unittest
import ModernGL
class TestCase(unittest.TestCase):
@classmethod
def setUpClass(cls):
cls.ctx = ModernGL.create_standalone_context()
@classmethod
def tearDownClass(cls):
error = cls.ctx.error # Store error in a variable
cls.ctx.release() # Then release the context
cls.assertEqual(error, 'GL_NO_ERROR') # Check if there were errors before the release
def test_1(self):
...
def test_2(self):
...
def test_3(self):
...
if __name__ == '__main__':
unittest.main()
注:
cls.ctx.error
が財産(文字列としてglGetError()
)で、可能な値は以下のとおりです。
"GL_NO_ERROR"
"GL_INVALID_ENUM"
"GL_INVALID_VALUE"
"GL_INVALID_OPERATION"
"GL_INVALID_FRAMEBUFFER_OPERATION"
"GL_OUT_OF_MEMORY"
"GL_STACK_UNDERFLOW"
"GL_STACK_OVERFLOW"
"GL_UNKNOWN_ERROR"
最後に、私は静かなエラーをチェックするために 'tearDown()'を使いました。 –