omegaup.validator.validatortest
Allows a validator to be modeled as a standard unit test.
To use, write your validator as if it were a normal unittest.TestCase:
import logging
import unittest
import sys
from omegaup.validator import validatortest
class MyTest(unittest.TestCase):
def test_foo(self):
contestant_output = sys.stdin
original_input = open('data.in', 'r')
original_output = open('data.out', 'r')
logging.info('This will be printed to stderr')
self.assertAlmostEqual(float(contestant_output.readline().strip()),
float(original_output.readline().strip()))
if __name__ == '__main__':
validatortest.main()
1# -*- coding: utf-8 -*- 2"""Allows a validator to be modeled as a standard unit test. 3 4To use, write your validator as if it were a normal 5[unittest.TestCase](https://docs.python.org/3/library/unittest.html#unittest.TestCase): 6 7```python 8import logging 9import unittest 10import sys 11 12from omegaup.validator import validatortest 13 14 15class MyTest(unittest.TestCase): 16 def test_foo(self): 17 contestant_output = sys.stdin 18 original_input = open('data.in', 'r') 19 original_output = open('data.out', 'r') 20 21 logging.info('This will be printed to stderr') 22 23 self.assertAlmostEqual(float(contestant_output.readline().strip()), 24 float(original_output.readline().strip())) 25 26 27if __name__ == '__main__': 28 validatortest.main() 29``` 30""" 31 32import logging 33import sys 34import unittest 35import unittest.case 36import unittest.suite 37 38from typing import Union 39 40 41class TestRunner(unittest.TextTestRunner): 42 """A unittest.TestRunner that prints 1 on standard output on success.""" 43 def run( 44 self, test: Union[unittest.suite.TestSuite, unittest.case.TestCase] 45 ) -> unittest.result.TestResult: 46 result = super().run(test) 47 if result is not None and result.wasSuccessful(): 48 print(1) 49 else: 50 print(0) 51 return result 52 53 54def main() -> None: 55 """Executes the tests on the current file.""" 56 logging.basicConfig(level=logging.DEBUG) 57 unittest.main(testRunner=TestRunner, argv=[sys.argv[0], '-v'])
class
TestRunner(unittest.runner.TextTestRunner):
42class TestRunner(unittest.TextTestRunner): 43 """A unittest.TestRunner that prints 1 on standard output on success.""" 44 def run( 45 self, test: Union[unittest.suite.TestSuite, unittest.case.TestCase] 46 ) -> unittest.result.TestResult: 47 result = super().run(test) 48 if result is not None and result.wasSuccessful(): 49 print(1) 50 else: 51 print(0) 52 return result
A unittest.TestRunner that prints 1 on standard output on success.
def
run( self, test: Union[unittest.suite.TestSuite, unittest.case.TestCase]) -> unittest.result.TestResult:
44 def run( 45 self, test: Union[unittest.suite.TestSuite, unittest.case.TestCase] 46 ) -> unittest.result.TestResult: 47 result = super().run(test) 48 if result is not None and result.wasSuccessful(): 49 print(1) 50 else: 51 print(0) 52 return result
Run the given test case or test suite.
Inherited Members
- unittest.runner.TextTestRunner
- TextTestRunner
- resultclass
def
main() -> None:
55def main() -> None: 56 """Executes the tests on the current file.""" 57 logging.basicConfig(level=logging.DEBUG) 58 unittest.main(testRunner=TestRunner, argv=[sys.argv[0], '-v'])
Executes the tests on the current file.