Exemplo n.º 1
0
def get_loader_sorting_by_methods_order(cls):
    """
    Возвращает loader unittest, в котором реализована сортировка тестов в порядке их описания внутри класса.
    Usage:
        unittest.main(testLoader=get_loader_sorting_by_methods_order(YourTestClass))
    :param cls: класс, которому принадлежат методы
    :return: лямбда-функция сортировки методов тестов
    """
    loader = TestLoader()
    method_line_number = lambda method: getattr(cls, method
                                                ).__code__.co_firstlineno
    loader.sortTestMethodsUsing = lambda a, b: method_line_number(
        a) - method_line_number(b)
    return loader
Exemplo n.º 2
0
# Ideally this would be in a common helper library shared between the tests
def terminate_server_process(process):
    if os.name == "nt":
        process.kill()
    else:
        os.killpg(os.getpgid(process.pid), signal.SIGTERM)  # Send the signal to all the process groups


if __name__ == "__main__":

    cwd = dirname(realpath(__file__))

    print("Current directory is: " + cwd)

    server = start_server_process()
    try:
        runner = TextTestRunner(verbosity=2)

        test_loader = TestLoader()
        test_loader.sortTestMethodsUsing = sort_test

        suite = test_loader.discover(cwd, pattern="*_tests.py")
        result = runner.run(suite)
        if not result.wasSuccessful():
            sys.exit(1)

    finally:
        print("Killing server")
        terminate_server_process(server)
        print("Done killing server")
Exemplo n.º 3
0
        # Never write output back to the console
        self._mirrorOutput = False
        unittest.TestResult.stopTest(self, test)

    def getResults(self):
        return self.results


if __name__ == '__main__':
    try:
        from test import Test

        # Run the tests with our custom setup
        loader = TestLoader()
        # Maintain the ordering that tests appear in the source code
        loader.sortTestMethodsUsing = lambda x, y: -1
        tests = loader.loadTestsFromTestCase(Test)
        suite = TestSuite([tests])
        runner = PrairieTestRunner()
        results = runner.run(suite).getResults()

        # Compile total number of points
        max_points = sum([test['max_points'] for test in results])
        earned_points = sum([test['points'] for test in results])

        # Assemble final grading results
        grading_result = {}
        grading_result['tests'] = results
        grading_result['score'] = float(earned_points) / float(max_points)
        grading_result['succeeded'] = True
        print(json.dumps(grading_result, allow_nan=False))
Exemplo n.º 4
0
    
    return subprocess.Popen(cmd, shell=True, preexec_fn=os.setsid) #On linux, have to set shell=True

#Ideally this would be in a common helper library shared between the tests
def terminate_server_process(process):
    if os.name == 'nt':
        process.kill()
    else:
        os.killpg(os.getpgid(process.pid), signal.SIGTERM)  # Send the signal to all the process groups    
    
if __name__ == '__main__':

    cwd = dirname(realpath(__file__))

    server = start_server_process()
    try:
        runner = TextTestRunner(verbosity=2)

        test_loader = TestLoader()    
        test_loader.sortTestMethodsUsing = sort_test

        suite = test_loader.discover(cwd, pattern="*_tests.py")
        result = runner.run(suite)
        if not result.wasSuccessful():
            sys.exit(1)

    finally:
        print("Killing server")
        terminate_server_process(server)
        print("Done killing server")
Exemplo n.º 5
0
        # Never write output back to the console
        self._mirrorOutput = False
        unittest.TestResult.stopTest(self, test)

    def getResults(self):
        return self.results


if __name__ == '__main__':
    try:
        from test import Test

        # Run the tests with our custom setup
        loader = TestLoader()
        # Maintain the ordering that tests appear in the source code
        loader.sortTestMethodsUsing = lambda x, y: -1
        tests = loader.loadTestsFromTestCase(Test)
        suite = TestSuite([tests])
        runner = PrairieTestRunner()
        results = runner.run(suite).getResults()

        # Compile total number of points
        max_points = sum([test['max_points'] for test in results])
        earned_points = sum([test['points'] for test in results])

        # Assemble final grading results
        grading_result = {}
        grading_result['tests'] = results
        grading_result['score'] = float(earned_points) / float(max_points)
        grading_result['succeeded'] = True
        print(json.dumps(grading_result, allow_nan=False))