Best Python code snippet using assertpy_python
test_traceback.py
Source:test_traceback.py  
1#####################################################################################2#3#  Copyright (c) Microsoft Corporation. All rights reserved.4#5# This source code is subject to terms and conditions of the Microsoft Public License. A6# copy of the license can be found in the License.html file at the root of this distribution. If7# you cannot locate the  Microsoft Public License, please send an email to8# ironpy@microsoft.com. By using this source code in any fashion, you are agreeing to be bound9# by the terms of the Microsoft Public License.10#11# You must not remove this notice, or any other, from this software.12#13#14#####################################################################################15# !!! DO NOT MOVE OR CHANGE THE FOLLOWING LINES16def _raise_exception():17    raise Exception()18_retb = (18, 0, 'test_traceback.py', '_raise_exception')19from iptest.assert_util import *20from iptest.file_util import *21if not is_cli: import os22def _raise_exception_with_finally():23    try:24        raise Exception()25    finally:26        pass27_rewftb= (27, 0, 'test_traceback.py', '_raise_exception_with_finally')28def assert_traceback(expected):29    import sys30    tb = sys.exc_info()[2]31    32    if expected is None:33        AreEqual(None, expected)34    else:35        tb_list = []36        while tb is not None :37            f = tb.tb_frame38            co = f.f_code39            filename = co.co_filename.lower()40            name = co.co_name41            tb_list.append((tb.tb_lineno, tb.tb_lasti, filename, name))42            tb = tb.tb_next43        44        #print tb_list45        46        AreEqual(len(tb_list), len(expected))47        48        for x in range(len(expected)):49            AreEqual(tb_list[x][0], expected[x][0])50            AreEqual(tb_list[x][2:], expected[x][2:])51            52def test_no_traceback():53    #assert_traceback(None)54    try:55        _raise_exception()56    except:57        pass58    assert_traceback(None)59FILE="test_traceback.py"60LINE100 = 7061def test_catch_others_exception():62    try:63        _raise_exception()64    except:65        assert_traceback([(LINE100 + 2, 0, FILE, 'test_catch_others_exception'), _retb])66LINE110 = 7867def test_catch_its_own_exception():68    try:69        raise Exception()70    except:71        assert_traceback([(LINE110 + 2, 0, FILE, 'test_catch_its_own_exception')])72LINE120 = 8673def test_catch_others_exception_with_finally():74    try:75        _raise_exception_with_finally()76    except:77        assert_traceback([(LINE120 + 2, 0, FILE, 'test_catch_others_exception_with_finally'), _rewftb])78LINE130 = 9479def test_nested_caught_outside():80    try:81        x = 282        try:83            _raise_exception()84        except NameError:85            Assert(False, "unhittable")86        y = 287    except:88        assert_traceback([(LINE130 + 4, 0, FILE, 'test_nested_caught_outside'), _retb])89LINE140 = 10890def test_nested_caught_inside():91    try:92        x = 293        try:94            _raise_exception()95        except:96            assert_traceback([(LINE140 + 4, 0, FILE, 'test_nested_caught_inside'), _retb])97        y = 298    except:99        assert_traceback(None)100LINE150 = 120101def test_throw_in_except():102    try:103        _raise_exception()104    except:105        assert_traceback([(LINE150+2, 0, FILE, 'test_throw_in_except'), _retb])106        try:107            assert_traceback([(LINE150+2, 0, FILE, 'test_throw_in_except'), _retb])108            _raise_exception()109        except:110            assert_traceback([(LINE150+7, 0, FILE, 'test_throw_in_except'), _retb])111    assert_traceback([(LINE150+7, 0, FILE, 'test_throw_in_except'), _retb])112LINE160 = 134113class C1:114    def M(self):115        try:116            _raise_exception()117        except:118            assert_traceback([(LINE160 + 3, 0, FILE, 'M'), _retb])119def test_throw_in_method():120    c = C1()121    c.M()122LINE170 = 147123def test_throw_when_defining_class():124    class C2(object):125        try:126            _raise_exception()127        except:128            assert_traceback([(LINE170 + 3, 0, FILE, 'C2'), _retb])129def throw_when_defining_class_directly():130    class C3(C1):131        _raise_exception()132LINE180 = 160133def test_throw_when_defining_class_directly():134    try:135        throw_when_defining_class_directly()136    except:137        assert_traceback([(LINE180 + 2, 0, FILE, 'test_throw_when_defining_class_directly'),138        (LINE180 - 5, 0, FILE, 'throw_when_defining_class_directly'),139        (LINE180 - 4, 0, FILE, 'C3'), _retb])140LINE200 = 169141def test_compiled_code():142    try:143        codeobj = compile('\nraise Exception()', '<mycode>', 'exec')144        exec(codeobj, {})145    except:146        assert_traceback([(LINE200+3, 0, FILE, 'test_compiled_code'), (2, 0, '<mycode>', '<module>')])147def generator_throw_before_yield():148    _raise_exception()149    yield 1150    151LINE210 = 181152def test_throw_before_yield():153    try:154        for x in generator_throw_before_yield():155            pass156    except:157        assert_traceback([(LINE210+3, 0, FILE, 'test_throw_before_yield'), (LINE210-4, 2, 'test_traceback.py', 'generator_throw_before_yield'), _retb])158def generator_throw_after_yield():159    yield 1160    _raise_exception()161LINE220 = 194162def test_throw_while_yield():163    try:164        for x in generator_throw_while_yield():165            pass166    except:167        assert_traceback([(LINE220+3, 0, FILE, 'test_throw_while_yield')])168def generator_yield_inside_try():169    try:170        yield 1171        yield 2172        _raise_exception()173    except NameError:174        pass175LINE230 = 211176def test_yield_inside_try():177    try:178        for x in generator_yield_inside_try():179            pass180    except:181        assert_traceback([(LINE230+3, 0, FILE, 'test_yield_inside_try'), (LINE230-5, 2, 'test_traceback.py', 'generator_yield_inside_try'), _retb])182LINE240 = 221183def test_throw_and_throw():184    try:185        _raise_exception()186    except:187        assert_traceback([(LINE240 + 2, 0, FILE, 'test_throw_and_throw'), _retb])188    try:189        _raise_exception()190    except:191        assert_traceback([(LINE240 + 6, 0, FILE, 'test_throw_and_throw'), _retb])192LINE250 = 233193def test_throw_in_another_file():194    if is_cli: _f_file = path_combine(get_full_dir_name(testpath.public_testdir), 'foo.py')195    else: _f_file = os.getcwd() + '\\foo.py'196    write_to_file(_f_file, '''197def another_raise():198    raise Exception()199''');200    try:201        import foo202        foo.another_raise()203    except:204        assert_traceback([(LINE250 + 8, 0, FILE, 'test_throw_in_another_file'), (3, 0, _f_file.lower(), 'another_raise')])205    finally:206        nt.remove(_f_file)207class MyException(Exception): pass208Line260 = 250209def catch_MyException():210    try:211        _raise_exception()212    except MyException:213        assert_traceback([])  # UNREACABLE. THIS TRICK SIMPLIFIES THE CHECK214def test_catch_MyException():215    try:216        catch_MyException()217    except:218        assert_traceback([(Line260+8, 0, FILE, 'test_catch_MyException'), (Line260+2, 0, FILE, 'catch_MyException'), _retb])219Line263 = 263220@skip("silverlight")221def test_cp11923_first():222    try:223        _t_test = testpath.public_testdir + "\\cp11923.py"224        write_to_file(_t_test, """def f():225    x = 'something bad'226    raise Exception(x)""")227        228        import cp11923229        for i in xrange(3):230            try:231                cp11923.f()232            except:233                assert_traceback([(Line263 + 11, 69, 'test_traceback.py', 'test_cp11923_first'), (3, 22, get_full_dir_name(_t_test).lower(), 'f')])234            reload(cp11923)235        236    finally:237        import nt238        nt.unlink(_t_test)239###############################################################################240##TESTS BEYOND THIS POINT SHOULD NOT DEPEND ON LINE NUMBERS IN THIS FILE#######241###############################################################################242@skip("silverlight")243def test_cp11923_second():244    import nt245    import sys246    old_path = [x for x in sys.path]247    sys.path.append(nt.getcwd())248        249    try:250        #Test setup251        _t_test = testpath.public_testdir + "\\cp11116_main.py"252        write_to_file(_t_test, """import cp11116_a253try:254    cp11116_a.a()255except:256    pass257cp11116_a.a()258""")259       260        _t_test_a = testpath.public_testdir + "\\cp11116_a.py"261        write_to_file(_t_test_a, """def a():262    raise None263""") 264        265        #Actual test266        t_out, t_in, t_err = nt.popen3(sys.executable + " " + nt.getcwd() + r"\cp11116_main.py")267        lines = t_err.readlines()268        t_err.close()269        t_out.close()270        t_in.close()271                272        #Verification273        Assert("cp11116_main.py\", line 7, in" in lines[1], lines[1])274        line_num = 3275        if is_cli:276            line_num -= 1277        Assert(lines[line_num].rstrip().endswith("cp11116_a.py\", line 2, in a"), lines[line_num])278        279    finally:280        sys.path = old_path281        nt.unlink(_t_test)282        nt.unlink(_t_test_a)283Line331 = 332284def test_reraise():285    def g():286        f()287    288    def f():289        try:290            raise Exception291        except:292            raise293    try:294        g()295    except:296        assert_traceback([(Line331+9, 0, 'test_traceback.py', 'test_reraise'), (Line331, 0, 'test_traceback.py', 'g'), (Line331+4, 0, 'test_traceback.py', 'f')])297def test_reraise_finally():298    def g():299        f()300    301    def f():302        try:303            raise Exception304        finally:305            raise306    try:307        g()308    except:309        assert_traceback([(Line331+25, 30, 'test_traceback.py', 'test_reraise_finally'), (Line331+16, 3, 'test_traceback.py', 'g'), (Line331+22,13, 'test_traceback.py', 'f')])310Line361 = 361311def test_xafter_finally_raise():312    def g():313        raise Exception314    315    def nop(): pass316    317    def f():318        try:319            nop()320        finally:321            nop()322            323        try:324            g()325        except Exception, e:326            assert_traceback([(Line361+14, 30, 'test_traceback.py', 'f'), (Line361+3, 3, 'test_traceback.py', 'g')])327    f()328Line381 = 381329def test_uncaught_exception_thru_try():330    def baz():331        raise StopIteration332    333    def f():334        try:335            baz()336        except TypeError:337            pass338    try:339        f()340    except:341        assert_traceback([(Line381+11, 30, 'test_traceback.py', 'test_uncaught_exception_thru_try'), (Line381+7, 3, 'test_traceback.py', 'f'), (Line381+3, 3, 'test_traceback.py', 'baz')])342Line397=397343def test_with_traceback():344    from thread import allocate_lock345    def f():346        g()347    348    def g():349        h()350    351    def h():352        raise Exception('hello!!')353        354    try:355        with allocate_lock():356            f()357    except:358        assert_traceback([(Line397+14, 30, 'test_traceback.py', 'test_with_traceback'), 359                          (Line397+4, 3, 'test_traceback.py', 'f'), 360                          (Line397+7, 3, 'test_traceback.py', 'g'),361                          (Line397+10, 3, 'test_traceback.py', 'h')])362        363Line419=419364def test_xraise_again():365    def f():366        g()367    368    def g():369        h()370    371    def h():372        raise Exception('hello!!')373        374    try:375        try:376            f()377        except Exception, e:378            raise e379    except:380        assert_traceback([(Line419+15, 30, 'test_traceback.py', 'test_xraise_again'), ])381Line438=438382def test_with_traceback_enter_throws():383    class ctx_mgr(object):384        def __enter__(*args):385            raise Exception('hello')386        def __exit__(*args):387            pass388    389    def h():390        raise Exception('hello!!')391        392        393    try:394        with ctx_mgr():395            h()396    except:397        assert_traceback([(Line438+13, 30, 'test_traceback.py', 'test_with_traceback_enter_throws'), 398                          (Line438+4, 3, 'test_traceback.py', '__enter__')])399                          400Line457=457401def test_with_traceback_exit_throws():402    class ctx_mgr(object):403        def __enter__(*args):404            pass405        def __exit__(*args):406            raise Exception('hello')407    408    def h():409        raise Exception('hello!!')410        411    try:412        with ctx_mgr():413            h()414    except:415        assert_traceback([(Line457+13, 30, 'test_traceback.py', 'test_with_traceback_exit_throws'), 416                          (Line457+6, 3, 'test_traceback.py', '__exit__')])417Line475=475418def test_with_traceback_ctor_throws():419    class ctx_mgr(object):420        def __init__(self):421            raise Exception('hello')422        def __enter__(*args):423            pass424        def __exit__(*args):425            pass426    427    def h():428        raise Exception('hello!!')429        430    try:431        with ctx_mgr():432            h()433    except:434        assert_traceback([(Line475+14, 30, 'test_traceback.py', 'test_with_traceback_ctor_throws'), 435                          (Line475+4, 3, 'test_traceback.py', '__init__')])436Line496=496437def test_with_mixed_stack():438    """tests a stack which is mixed w/ interpreted and non-interpreted frames439because f() has a loop in it"""440    def a():441        with xxx() as abc:442            f()443    444    def f():445        for z in ():446            pass447            448        1/0449    450    class xxx(object):451        def __enter__(*args): pass452        def __exit__(*args): pass453    454    try:455        a()456    except:457        assert_traceback([(Line496+19, 30, 'test_traceback.py', 'test_with_mixed_stack'), 458                        (Line496+6, 3, 'test_traceback.py', 'a'),459                        (Line496+12, 3, 'test_traceback.py', 'f')])460                          ...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!!
