Best Python code snippet using avocado_python
test_loader.py
Source:test_loader.py  
1import json2import os3import signal4import stat5import subprocess6import time7import unittest8from avocado.core import exit_codes9from avocado.utils import process, script10from .. import (AVOCADO, BASEDIR, TestCaseTmpDir, skipOnLevelsInferiorThan,11                skipUnlessPathExists)12AVOCADO_TEST_OK = """#!/usr/bin/env python13from avocado import Test14from avocado import main15class PassTest(Test):16    def test(self):17        pass18if __name__ == "__main__":19    main()20"""21AVOCADO_TEST_SLEEP_ELEVEN = """#!/usr/bin/env python22import time23from avocado import Test24from avocado import main25class SleepEleven(Test):26    def test(self):27        time.sleep(10)28    def test_2(self):29        time.sleep(1)30time.sleep(11)31if __name__ == "__main__":32    main()33"""34AVOCADO_TEST_MULTIPLE_CLASSES = """#!/usr/bin/env python35import time36from avocado import Test37from avocado import main38class First(Test):39    def test(self):40        pass41class Second(Test):42    def test(self):43        pass44if __name__ == "__main__":45    main()46"""47AVOCADO_TEST_MULTIPLE_METHODS_SAME_NAME = """#!/usr/bin/env python48from avocado import Test49from avocado import main50class Multiple(Test):51    def test(self):52        raise53    def test(self):54        pass55if __name__ == "__main__":56    main()57"""58NOT_A_TEST = """59def hello():60    print('Hello World!')61"""62PY_SIMPLE_TEST = """#!/usr/bin/env python63def hello():64    print('Hello World!')65if __name__ == "__main__":66    hello()67"""68SIMPLE_TEST = """#!/bin/sh69true70"""71AVOCADO_SIMPLE_PYTHON_LIKE_MULTIPLE_FILES = """#!/usr/bin/env python72# A simple test (executable bit set when saved to file) that looks like73# an Avocado instrumented test, with base class on separate file74from avocado import Test75from avocado import main76from test2 import *77class BasicTestSuite(SuperTest):78    '''79    :avocado: disable80    '''81    def test1(self):82        self.xxx()83        self.assertTrue(True)84if __name__ == '__main__':85    main()86"""87AVOCADO_SIMPLE_PYTHON_LIKE_MULTIPLE_FILES_LIB = """88#!/usr/bin/python89from avocado import Test90class SuperTest(Test):91    def xxx(self):92        print "ahoj"93"""94AVOCADO_TEST_SIMPLE_USING_MAIN = """#!/usr/bin/env python95from avocado import main96if __name__ == "__main__":97    main()98"""99class LoaderTestFunctional(TestCaseTmpDir):100    MODE_0664 = (stat.S_IRUSR | stat.S_IWUSR |101                 stat.S_IRGRP | stat.S_IWGRP |102                 stat.S_IROTH)103    MODE_0775 = (stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR |104                 stat.S_IRGRP | stat.S_IWGRP | stat.S_IXGRP |105                 stat.S_IROTH | stat.S_IXOTH)106    def _test(self, name, content, exp_str, mode=MODE_0664, count=1):107        test_script = script.TemporaryScript(name, content,108                                             'avocado_loader_test',109                                             mode=mode)110        test_script.save()111        cmd_line = ('%s -V list %s' % (AVOCADO, test_script.path))112        result = process.run(cmd_line)113        self.assertIn('%s: %s' % (exp_str, count), result.stdout_text)114        test_script.remove()115    def _run_with_timeout(self, cmd_line, timeout):116        current_time = time.time()117        deadline = current_time + timeout118        test_process = subprocess.Popen(cmd_line, stdout=subprocess.PIPE,  # pylint: disable=W1509119                                        stderr=subprocess.PIPE,120                                        preexec_fn=os.setsid, shell=True)121        while not test_process.poll():122            if time.time() > deadline:123                os.killpg(os.getpgid(test_process.pid), signal.SIGKILL)124                self.fail("Failed to run test under %s seconds" % timeout)125            time.sleep(0.05)126        self.assertEqual(test_process.returncode, exit_codes.AVOCADO_TESTS_FAIL)127    def test_simple(self):128        self._test('simpletest.sh', SIMPLE_TEST, 'simple', self.MODE_0775)129    def test_simple_not_exec(self):130        # 2 because both FileLoader and the TAP loader cannot recognize the test131        self._test('simpletest.sh', SIMPLE_TEST, 'not_a_test', count=2)132    def test_pass(self):133        self._test('passtest.py', AVOCADO_TEST_OK, 'instrumented')134    def test_not_python_module(self):135        # 2 because both FileLoader and the TAP loader cannot recognize the test136        self._test('passtest', AVOCADO_TEST_OK, 'not_a_test', count=2)137    @skipOnLevelsInferiorThan(2)138    def test_sleep_a_lot(self):139        """140        Verifies that the test loader, at list time, does not load the Python141        module and thus executes its contents.142        :avocado: tags=parallel:1143        """144        test_script = script.TemporaryScript('sleepeleven.py',145                                             AVOCADO_TEST_SLEEP_ELEVEN,146                                             'avocado_loader_test',147                                             mode=self.MODE_0664)148        test_script.save()149        cmd_line = ('%s -V list %s' % (AVOCADO, test_script.path))150        initial_time = time.time()151        result = process.run(cmd_line, ignore_status=True)152        test_script.remove()153        actual_time = time.time() - initial_time154        self.assertLess(actual_time, 3.0,155                        ("Took more than 3 seconds to list tests. Loader "156                         "probably loaded/executed Python code and slept for "157                         "eleven seconds."))158        self.assertIn(b'instrumented: 2', result.stdout)159    def test_multiple_class(self):160        self._test('multipleclasses.py', AVOCADO_TEST_MULTIPLE_CLASSES,161                   'instrumented', self.MODE_0664, 2)162    def test_multiple_methods_same_name(self):163        self._test('multiplemethods.py', AVOCADO_TEST_MULTIPLE_METHODS_SAME_NAME,164                   'instrumented', self.MODE_0664, 1)165    def test_load_not_a_test(self):166        self._test('notatest.py', NOT_A_TEST, 'simple', self.MODE_0775)167    def test_load_not_a_test_not_exec(self):168        # 2 because both FileLoader and the TAP loader cannot recognize the test169        self._test('notatest.py', NOT_A_TEST, 'not_a_test', count=2)170    @skipOnLevelsInferiorThan(2)171    def test_runner_simple_python_like_multiple_files(self):172        """173        :avocado: tags=parallel:1174        """175        mylib = script.TemporaryScript(176            'test2.py',177            AVOCADO_SIMPLE_PYTHON_LIKE_MULTIPLE_FILES_LIB,178            'avocado_simpletest_functional',179            self.MODE_0664)180        mylib.save()181        mytest = script.Script(182            os.path.join(os.path.dirname(mylib.path), 'test.py'),183            AVOCADO_SIMPLE_PYTHON_LIKE_MULTIPLE_FILES)184        os.chdir(BASEDIR)185        mytest.save()186        cmd_line = "%s -V list %s" % (AVOCADO, mytest)187        result = process.run(cmd_line)188        self.assertIn(b'simple: 1', result.stdout)189        # job should be able to finish under 5 seconds. If this fails, it's190        # possible that we hit the "simple test fork bomb" bug191        cmd_line = ("%s run --disable-sysinfo --job-results-dir '%s' -- '%s'"192                    % (AVOCADO, self.tmpdir.name, mytest))193        self._run_with_timeout(cmd_line, 5)194    @skipOnLevelsInferiorThan(2)195    def test_simple_using_main(self):196        """197        :avocado: tags=parallel:1198        """199        mytest = script.TemporaryScript("simple_using_main.py",200                                        AVOCADO_TEST_SIMPLE_USING_MAIN,201                                        'avocado_simpletest_functional')202        mytest.save()203        os.chdir(BASEDIR)204        # job should be able to finish under 5 seconds. If this fails, it's205        # possible that we hit the "simple test fork bomb" bug206        cmd_line = ("%s run --disable-sysinfo --job-results-dir '%s' -- '%s'"207                    % (AVOCADO, self.tmpdir.name, mytest))208        self._run_with_timeout(cmd_line, 5)209    def test_python_unittest(self):210        test_path = os.path.join(BASEDIR, "selftests", ".data", "unittests.py")211        cmd = ("%s run --disable-sysinfo --job-results-dir %s --json - -- %s"212               % (AVOCADO, self.tmpdir.name, test_path))213        result = process.run(cmd, ignore_status=True)214        jres = json.loads(result.stdout_text)215        self.assertEqual(result.exit_status, 1, result)216        exps = [("unittests.Second.test_fail", "FAIL"),217                ("unittests.Second.test_error", "ERROR"),218                ("unittests.Second.test_skip", "CANCEL"),219                ("unittests.First.test_pass", "PASS")]220        for test in jres["tests"]:221            for exp in exps:222                if exp[0] in test["id"]:223                    self.assertEqual(test["status"], exp[1], "Status of %s not"224                                     " as expected\n%s" % (exp, result))225                    exps.remove(exp)226                    break227            else:228                self.fail("No expected result for %s\n%s\n\nexps = %s"229                          % (test["id"], result, exps))230        self.assertFalse(exps, "Some expected result not matched to actual"231                         "results:\n%s\n\nexps = %s" % (result, exps))232    def test_list_subtests_filter(self):233        """234        Check whether the subtests filter works for both INSTRUMENTED235        and SIMPLE in a directory list.236        """237        cmd = "%s list examples/tests/:fail" % AVOCADO238        result = process.run(cmd)239        expected = (b"INSTRUMENTED examples/tests/assert.py:Assert.test_fails_to_raise\n"240                    b"INSTRUMENTED examples/tests/doublefail.py:DoubleFail.test\n"241                    b"INSTRUMENTED examples/tests/fail_on_exception.py:FailOnException.test\n"242                    b"INSTRUMENTED examples/tests/failtest.py:FailTest.test\n"243                    b"SIMPLE       examples/tests/failtest.sh\n")244        self.assertEqual(expected, result.stdout)245    @skipUnlessPathExists('/bin/sh')246    def test_loader_and_external_runner_incompatibility(self):247        """248        Check if the user is inform about incompatibility between loader and249        external_runner.250        """251        test_script = script.TemporaryScript('simpletest.sh', SIMPLE_TEST,252                                             'avocado_loader_test',253                                             mode=self.MODE_0775)254        test_script.save()255        cmd = ("%s run --loaders=FOO "256               "--external-runner=/bin/sh %s") % (AVOCADO, test_script.path)257        result = process.run(cmd)258        expected_warning = ("The loaders and external-runner are incompatible."259                            "The values in loaders will be ignored.")260        self.assertIn(expected_warning, result.stderr_text)261        cmd = "%s run --external-runner=/bin/sh %s" % (AVOCADO,262                                                       test_script.path)263        result = process.run(cmd)264        self.assertNotIn(expected_warning, result.stderr_text)265        test_script.remove()266if __name__ == '__main__':...assert.py
Source:assert.py  
...6class Assert(Test):7    def test_assert_raises(self):8        with self.assertRaises(MyException):9            raises_exception()10    def test_fails_to_raise(self):11        with self.assertRaises(MyException):...Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!
