Best Python code snippet using slash
metafunc.py
Source:metafunc.py  
...71        assert not hasattr(metafunc._calls[1], 'param')72    def test_parametrize_error(self):73        def func(x, y): pass74        metafunc = self.Metafunc(func)75        metafunc.parametrize("x", [1,2])76        pytest.raises(ValueError, lambda: metafunc.parametrize("x", [5,6]))77        pytest.raises(ValueError, lambda: metafunc.parametrize("x", [5,6]))78        metafunc.parametrize("y", [1,2])79        pytest.raises(ValueError, lambda: metafunc.parametrize("y", [5,6]))80        pytest.raises(ValueError, lambda: metafunc.parametrize("y", [5,6]))81    def test_parametrize_and_id(self):82        def func(x, y): pass83        metafunc = self.Metafunc(func)84        metafunc.parametrize("x", [1,2], ids=['basic', 'advanced'])85        metafunc.parametrize("y", ["abc", "def"])86        ids = [x.id for x in metafunc._calls]87        assert ids == ["basic-abc", "basic-def", "advanced-abc", "advanced-def"]88    def test_parametrize_with_wrong_number_of_ids(self, testdir):89        def func(x, y): pass90        metafunc = self.Metafunc(func)91        pytest.raises(ValueError, lambda:92            metafunc.parametrize("x", [1,2], ids=['basic']))93        pytest.raises(ValueError, lambda:94            metafunc.parametrize(("x","y"), [("abc", "def"),95                                             ("ghi", "jkl")], ids=["one"]))96    def test_parametrize_with_userobjects(self):97        def func(x, y): pass98        metafunc = self.Metafunc(func)99        class A:100            pass101        metafunc.parametrize("x", [A(), A()])102        metafunc.parametrize("y", list("ab"))103        assert metafunc._calls[0].id == "x0-a"104        assert metafunc._calls[1].id == "x0-b"105        assert metafunc._calls[2].id == "x1-a"106        assert metafunc._calls[3].id == "x1-b"107    @pytest.mark.skipif('sys.version_info[0] >= 3')108    def test_unicode_idval_python2(self):109        """unittest for the expected behavior to obtain ids for parametrized110        unicode values in Python 2: if convertible to ascii, they should appear111        as ascii values, otherwise fallback to hide the value behind the name112        of the parametrized variable name. #1086113        """114        from _pytest.python import _idval115        values = [116            (u'', ''),117            (u'ascii', 'ascii'),118            (u'ação', 'a6'),119            (u'josé@blah.com', 'a6'),120            (u'δοκ.ιμή@ÏαÏάδειγμα.δοκιμή', 'a6'),121        ]122        for val, expected in values:123            assert _idval(val, 'a', 6, None) == expected124    def test_bytes_idval(self):125        """unittest for the expected behavior to obtain ids for parametrized126        bytes values:127        - python2: non-ascii strings are considered bytes and formatted using128        "binary escape", where any byte < 127 is escaped into its hex form.129        - python3: bytes objects are always escaped using "binary escape".130        """131        from _pytest.python import _idval132        values = [133            (b'', ''),134            (b'\xc3\xb4\xff\xe4', '\\xc3\\xb4\\xff\\xe4'),135            (b'ascii', 'ascii'),136            (u'αÏά'.encode('utf-8'), '\\xce\\xb1\\xcf\\x81\\xce\\xac'),137        ]138        for val, expected in values:139            assert _idval(val, 'a', 6, None) == expected140    @pytest.mark.issue250141    def test_idmaker_autoname(self):142        from _pytest.python import idmaker143        result = idmaker(("a", "b"), [("string", 1.0),144                                      ("st-ring", 2.0)])145        assert result == ["string-1.0", "st-ring-2.0"]146        result = idmaker(("a", "b"), [(object(), 1.0),147                                      (object(), object())])148        assert result == ["a0-1.0", "a1-b1"]149        # unicode mixing, issue250150        result = idmaker((py.builtin._totext("a"), "b"), [({}, b'\xc3\xb4')])151        assert result == ['a0-\\xc3\\xb4']152    def test_idmaker_with_bytes_regex(self):153        from _pytest.python import idmaker154        result = idmaker(("a"), [(re.compile(b'foo'), 1.0)])155        assert result == ["foo"]156    def test_idmaker_native_strings(self):157        from _pytest.python import idmaker158        totext = py.builtin._totext159        result = idmaker(("a", "b"), [(1.0, -1.1),160                                      (2, -202),161                                      ("three", "three hundred"),162                                      (True, False),163                                      (None, None),164                                      (re.compile('foo'), re.compile('bar')),165                                      (str, int),166                                      (list("six"), [66, 66]),167                                      (set([7]), set("seven")),168                                      (tuple("eight"), (8, -8, 8)),169                                      (b'\xc3\xb4', b"name"),170                                      (b'\xc3\xb4', totext("other")),171        ])172        assert result == ["1.0--1.1",173                          "2--202",174                          "three-three hundred",175                          "True-False",176                          "None-None",177                          "foo-bar",178                          "str-int",179                          "a7-b7",180                          "a8-b8",181                          "a9-b9",182                          "\\xc3\\xb4-name",183                          "\\xc3\\xb4-other",184                          ]185    def test_idmaker_enum(self):186        from _pytest.python import idmaker187        enum = pytest.importorskip("enum")188        e = enum.Enum("Foo", "one, two")189        result = idmaker(("a", "b"), [(e.one, e.two)])190        assert result == ["Foo.one-Foo.two"]191    @pytest.mark.issue351192    def test_idmaker_idfn(self):193        from _pytest.python import idmaker194        def ids(val):195            if isinstance(val, Exception):196                return repr(val)197        result = idmaker(("a", "b"), [(10.0, IndexError()),198                                      (20, KeyError()),199                                      ("three", [1, 2, 3]),200        ], idfn=ids)201        assert result == ["10.0-IndexError()",202                          "20-KeyError()",203                          "three-b2",204                         ]205    @pytest.mark.issue351206    def test_idmaker_idfn_unique_names(self):207        from _pytest.python import idmaker208        def ids(val):209            return 'a'210        result = idmaker(("a", "b"), [(10.0, IndexError()),211                                      (20, KeyError()),212                                      ("three", [1, 2, 3]),213        ], idfn=ids)214        assert result == ["0a-a",215                          "1a-a",216                          "2a-a",217                         ]218    @pytest.mark.issue351219    def test_idmaker_idfn_exception(self):220        from _pytest.python import idmaker221        def ids(val):222            raise Exception("bad code")223        result = idmaker(("a", "b"), [(10.0, IndexError()),224                                      (20, KeyError()),225                                      ("three", [1, 2, 3]),226        ], idfn=ids)227        assert result == ["10.0-b0",228                          "20-b1",229                          "three-b2",230                         ]231    def test_addcall_and_parametrize(self):232        def func(x, y): pass233        metafunc = self.Metafunc(func)234        metafunc.addcall({'x': 1})235        metafunc.parametrize('y', [2,3])236        assert len(metafunc._calls) == 2237        assert metafunc._calls[0].funcargs == {'x': 1, 'y': 2}238        assert metafunc._calls[1].funcargs == {'x': 1, 'y': 3}239        assert metafunc._calls[0].id == "0-2"240        assert metafunc._calls[1].id == "0-3"241    @pytest.mark.issue714242    def test_parametrize_indirect(self):243        def func(x, y): pass244        metafunc = self.Metafunc(func)245        metafunc.parametrize('x', [1], indirect=True)246        metafunc.parametrize('y', [2,3], indirect=True)247        assert len(metafunc._calls) == 2248        assert metafunc._calls[0].funcargs == {}249        assert metafunc._calls[1].funcargs == {}250        assert metafunc._calls[0].params == dict(x=1,y=2)251        assert metafunc._calls[1].params == dict(x=1,y=3)252    @pytest.mark.issue714253    def test_parametrize_indirect_list(self):254        def func(x, y): pass255        metafunc = self.Metafunc(func)256        metafunc.parametrize('x, y', [('a', 'b')], indirect=['x'])257        assert metafunc._calls[0].funcargs == dict(y='b')258        assert metafunc._calls[0].params == dict(x='a')259    @pytest.mark.issue714260    def test_parametrize_indirect_list_all(self):261        def func(x, y): pass262        metafunc = self.Metafunc(func)263        metafunc.parametrize('x, y', [('a', 'b')], indirect=['x', 'y'])264        assert metafunc._calls[0].funcargs == {}265        assert metafunc._calls[0].params == dict(x='a', y='b')266    @pytest.mark.issue714267    def test_parametrize_indirect_list_empty(self):268        def func(x, y): pass269        metafunc = self.Metafunc(func)270        metafunc.parametrize('x, y', [('a', 'b')], indirect=[])271        assert metafunc._calls[0].funcargs == dict(x='a', y='b')272        assert metafunc._calls[0].params == {}273    @pytest.mark.issue714274    def test_parametrize_indirect_list_functional(self, testdir):275        """276        Test parametrization with 'indirect' parameter applied on277        particular arguments. As y is is direct, its value should278        be used directly rather than being passed to the fixture279        y.280        :param testdir: the instance of Testdir class, a temporary281        test directory.282        """283        testdir.makepyfile("""284            import pytest285            @pytest.fixture(scope='function')286            def x(request):287                return request.param * 3288            @pytest.fixture(scope='function')289            def y(request):290                return request.param * 2291            @pytest.mark.parametrize('x, y', [('a', 'b')], indirect=['x'])292            def test_simple(x,y):293                assert len(x) == 3294                assert len(y) == 1295        """)296        result = testdir.runpytest("-v")297        result.stdout.fnmatch_lines([298            "*test_simple*a-b*",299            "*1 passed*",300        ])301    @pytest.mark.issue714302    def test_parametrize_indirect_list_error(self, testdir):303        def func(x, y): pass304        metafunc = self.Metafunc(func)305        with pytest.raises(ValueError):306            metafunc.parametrize('x, y', [('a', 'b')], indirect=['x', 'z'])307    @pytest.mark.issue714308    def test_parametrize_uses_no_fixture_error_indirect_false(self, testdir):309        """The 'uses no fixture' error tells the user at collection time310        that the parametrize data they've set up doesn't correspond to the311        fixtures in their test function, rather than silently ignoring this312        and letting the test potentially pass.313        """314        testdir.makepyfile("""315            import pytest316            @pytest.mark.parametrize('x, y', [('a', 'b')], indirect=False)317            def test_simple(x):318                assert len(x) == 3319        """)320        result = testdir.runpytest("--collect-only")321        result.stdout.fnmatch_lines([322            "*uses no fixture 'y'*",323        ])324    @pytest.mark.issue714325    def test_parametrize_uses_no_fixture_error_indirect_true(self, testdir):326        testdir.makepyfile("""327            import pytest328            @pytest.fixture(scope='function')329            def x(request):330                return request.param * 3331            @pytest.fixture(scope='function')332            def y(request):333                return request.param * 2334            @pytest.mark.parametrize('x, y', [('a', 'b')], indirect=True)335            def test_simple(x):336                assert len(x) == 3337        """)338        result = testdir.runpytest("--collect-only")339        result.stdout.fnmatch_lines([340            "*uses no fixture 'y'*",341        ])342    @pytest.mark.issue714343    def test_parametrize_indirect_uses_no_fixture_error_indirect_list(self, testdir):344        testdir.makepyfile("""345            import pytest346            @pytest.fixture(scope='function')347            def x(request):348                return request.param * 3349            @pytest.mark.parametrize('x, y', [('a', 'b')], indirect=['x'])350            def test_simple(x):351                assert len(x) == 3352        """)353        result = testdir.runpytest("--collect-only")354        result.stdout.fnmatch_lines([355            "*uses no fixture 'y'*",356        ])357    def test_addcalls_and_parametrize_indirect(self):358        def func(x, y): pass359        metafunc = self.Metafunc(func)360        metafunc.addcall(param="123")361        metafunc.parametrize('x', [1], indirect=True)362        metafunc.parametrize('y', [2,3], indirect=True)363        assert len(metafunc._calls) == 2364        assert metafunc._calls[0].funcargs == {}365        assert metafunc._calls[1].funcargs == {}366        assert metafunc._calls[0].params == dict(x=1,y=2)367        assert metafunc._calls[1].params == dict(x=1,y=3)368    def test_parametrize_functional(self, testdir):369        testdir.makepyfile("""370            def pytest_generate_tests(metafunc):371                metafunc.parametrize('x', [1,2], indirect=True)372                metafunc.parametrize('y', [2])373            def pytest_funcarg__x(request):374                return request.param * 10375            #def pytest_funcarg__y(request):376            #    return request.param377            def test_simple(x,y):378                assert x in (10,20)379                assert y == 2380        """)381        result = testdir.runpytest("-v")382        result.stdout.fnmatch_lines([383            "*test_simple*1-2*",384            "*test_simple*2-2*",385            "*2 passed*",386        ])387    def test_parametrize_onearg(self):388        metafunc = self.Metafunc(lambda x: None)389        metafunc.parametrize("x", [1,2])390        assert len(metafunc._calls) == 2391        assert metafunc._calls[0].funcargs == dict(x=1)392        assert metafunc._calls[0].id == "1"393        assert metafunc._calls[1].funcargs == dict(x=2)394        assert metafunc._calls[1].id == "2"395    def test_parametrize_onearg_indirect(self):396        metafunc = self.Metafunc(lambda x: None)397        metafunc.parametrize("x", [1,2], indirect=True)398        assert metafunc._calls[0].params == dict(x=1)399        assert metafunc._calls[0].id == "1"400        assert metafunc._calls[1].params == dict(x=2)401        assert metafunc._calls[1].id == "2"402    def test_parametrize_twoargs(self):403        metafunc = self.Metafunc(lambda x,y: None)404        metafunc.parametrize(("x", "y"), [(1,2), (3,4)])405        assert len(metafunc._calls) == 2406        assert metafunc._calls[0].funcargs == dict(x=1, y=2)407        assert metafunc._calls[0].id == "1-2"408        assert metafunc._calls[1].funcargs == dict(x=3, y=4)409        assert metafunc._calls[1].id == "3-4"410    def test_parametrize_multiple_times(self, testdir):411        testdir.makepyfile("""412            import pytest413            pytestmark = pytest.mark.parametrize("x", [1,2])414            def test_func(x):415                assert 0, x416            class TestClass:417                pytestmark = pytest.mark.parametrize("y", [3,4])418                def test_meth(self, x, y):419                    assert 0, x420        """)421        result = testdir.runpytest()422        assert result.ret == 1423        result.assert_outcomes(failed=6)424    def test_parametrize_CSV(self, testdir):425        testdir.makepyfile("""426            import pytest427            @pytest.mark.parametrize("x, y,", [(1,2), (2,3)])428            def test_func(x, y):429                assert x+1 == y430        """)431        reprec = testdir.inline_run()432        reprec.assertoutcome(passed=2)433    def test_parametrize_class_scenarios(self, testdir):434        testdir.makepyfile("""435        # same as doc/en/example/parametrize scenario example436        def pytest_generate_tests(metafunc):437            idlist = []438            argvalues = []439            for scenario in metafunc.cls.scenarios:440                idlist.append(scenario[0])441                items = scenario[1].items()442                argnames = [x[0] for x in items]443                argvalues.append(([x[1] for x in items]))444            metafunc.parametrize(argnames, argvalues, ids=idlist, scope="class")445        class Test(object):446               scenarios = [['1', {'arg': {1: 2}, "arg2": "value2"}],447                            ['2', {'arg':'value2', "arg2": "value2"}]]448               def test_1(self, arg, arg2):449                  pass450               def test_2(self, arg2, arg):451                  pass452               def test_3(self, arg, arg2):453                  pass454        """)455        result = testdir.runpytest("-v")456        assert result.ret == 0457        result.stdout.fnmatch_lines("""458            *test_1*1*459            *test_2*1*460            *test_3*1*461            *test_1*2*462            *test_2*2*463            *test_3*2*464            *6 passed*465        """)466    def test_format_args(self):467        def function1(): pass468        assert funcargs._format_args(function1) == '()'469        def function2(arg1): pass470        assert funcargs._format_args(function2) == "(arg1)"471        def function3(arg1, arg2="qwe"): pass472        assert funcargs._format_args(function3) == "(arg1, arg2='qwe')"473        def function4(arg1, *args, **kwargs): pass474        assert funcargs._format_args(function4) == "(arg1, *args, **kwargs)"475class TestMetafuncFunctional:476    def test_attributes(self, testdir):477        p = testdir.makepyfile("""478            # assumes that generate/provide runs in the same process479            import py, pytest480            def pytest_generate_tests(metafunc):481                metafunc.addcall(param=metafunc)482            def pytest_funcarg__metafunc(request):483                assert request._pyfuncitem._genid == "0"484                return request.param485            def test_function(metafunc, pytestconfig):486                assert metafunc.config == pytestconfig487                assert metafunc.module.__name__ == __name__488                assert metafunc.function == test_function489                assert metafunc.cls is None490            class TestClass:491                def test_method(self, metafunc, pytestconfig):492                    assert metafunc.config == pytestconfig493                    assert metafunc.module.__name__ == __name__494                    if py.std.sys.version_info > (3, 0):495                        unbound = TestClass.test_method496                    else:497                        unbound = TestClass.test_method.im_func498                    # XXX actually have an unbound test function here?499                    assert metafunc.function == unbound500                    assert metafunc.cls == TestClass501        """)502        result = testdir.runpytest(p, "-v")503        result.assert_outcomes(passed=2)504    def test_addcall_with_two_funcargs_generators(self, testdir):505        testdir.makeconftest("""506            def pytest_generate_tests(metafunc):507                assert "arg1" in metafunc.fixturenames508                metafunc.addcall(funcargs=dict(arg1=1, arg2=2))509        """)510        p = testdir.makepyfile("""511            def pytest_generate_tests(metafunc):512                metafunc.addcall(funcargs=dict(arg1=1, arg2=1))513            class TestClass:514                def test_myfunc(self, arg1, arg2):515                    assert arg1 == arg2516        """)517        result = testdir.runpytest("-v", p)518        result.stdout.fnmatch_lines([519            "*test_myfunc*0*PASS*",520            "*test_myfunc*1*FAIL*",521            "*1 failed, 1 passed*"522        ])523    def test_two_functions(self, testdir):524        p = testdir.makepyfile("""525            def pytest_generate_tests(metafunc):526                metafunc.addcall(param=10)527                metafunc.addcall(param=20)528            def pytest_funcarg__arg1(request):529                return request.param530            def test_func1(arg1):531                assert arg1 == 10532            def test_func2(arg1):533                assert arg1 in (10, 20)534        """)535        result = testdir.runpytest("-v", p)536        result.stdout.fnmatch_lines([537            "*test_func1*0*PASS*",538            "*test_func1*1*FAIL*",539            "*test_func2*PASS*",540            "*1 failed, 3 passed*"541        ])542    def test_noself_in_method(self, testdir):543        p = testdir.makepyfile("""544            def pytest_generate_tests(metafunc):545                assert 'xyz' not in metafunc.fixturenames546            class TestHello:547                def test_hello(xyz):548                    pass549        """)550        result = testdir.runpytest(p)551        result.assert_outcomes(passed=1)552    def test_generate_plugin_and_module(self, testdir):553        testdir.makeconftest("""554            def pytest_generate_tests(metafunc):555                assert "arg1" in metafunc.fixturenames556                metafunc.addcall(id="world", param=(2,100))557        """)558        p = testdir.makepyfile("""559            def pytest_generate_tests(metafunc):560                metafunc.addcall(param=(1,1), id="hello")561            def pytest_funcarg__arg1(request):562                return request.param[0]563            def pytest_funcarg__arg2(request):564                return request.param[1]565            class TestClass:566                def test_myfunc(self, arg1, arg2):567                    assert arg1 == arg2568        """)569        result = testdir.runpytest("-v", p)570        result.stdout.fnmatch_lines([571            "*test_myfunc*hello*PASS*",572            "*test_myfunc*world*FAIL*",573            "*1 failed, 1 passed*"574        ])575    def test_generate_tests_in_class(self, testdir):576        p = testdir.makepyfile("""577            class TestClass:578                def pytest_generate_tests(self, metafunc):579                    metafunc.addcall(funcargs={'hello': 'world'}, id="hello")580                def test_myfunc(self, hello):581                    assert hello == "world"582        """)583        result = testdir.runpytest("-v", p)584        result.stdout.fnmatch_lines([585            "*test_myfunc*hello*PASS*",586            "*1 passed*"587        ])588    def test_two_functions_not_same_instance(self, testdir):589        p = testdir.makepyfile("""590            def pytest_generate_tests(metafunc):591                metafunc.addcall({'arg1': 10})592                metafunc.addcall({'arg1': 20})593            class TestClass:594                def test_func(self, arg1):595                    assert not hasattr(self, 'x')596                    self.x = 1597        """)598        result = testdir.runpytest("-v", p)599        result.stdout.fnmatch_lines([600            "*test_func*0*PASS*",601            "*test_func*1*PASS*",602            "*2 pass*",603        ])604    def test_issue28_setup_method_in_generate_tests(self, testdir):605        p = testdir.makepyfile("""606            def pytest_generate_tests(metafunc):607                metafunc.addcall({'arg1': 1})608            class TestClass:609                def test_method(self, arg1):610                    assert arg1 == self.val611                def setup_method(self, func):612                    self.val = 1613            """)614        result = testdir.runpytest(p)615        result.assert_outcomes(passed=1)616    def test_parametrize_functional2(self, testdir):617        testdir.makepyfile("""618            def pytest_generate_tests(metafunc):619                metafunc.parametrize("arg1", [1,2])620                metafunc.parametrize("arg2", [4,5])621            def test_hello(arg1, arg2):622                assert 0, (arg1, arg2)623        """)624        result = testdir.runpytest()625        result.stdout.fnmatch_lines([626            "*(1, 4)*",627            "*(1, 5)*",628            "*(2, 4)*",629            "*(2, 5)*",630            "*4 failed*",631        ])632    def test_parametrize_and_inner_getfuncargvalue(self, testdir):633        p = testdir.makepyfile("""634            def pytest_generate_tests(metafunc):635                metafunc.parametrize("arg1", [1], indirect=True)636                metafunc.parametrize("arg2", [10], indirect=True)637            def pytest_funcarg__arg1(request):638                x = request.getfuncargvalue("arg2")639                return x + request.param640            def pytest_funcarg__arg2(request):641                return request.param642            def test_func1(arg1, arg2):643                assert arg1 == 11644        """)645        result = testdir.runpytest("-v", p)646        result.stdout.fnmatch_lines([647            "*test_func1*1*PASS*",648            "*1 passed*"649        ])650    def test_parametrize_on_setup_arg(self, testdir):651        p = testdir.makepyfile("""652            def pytest_generate_tests(metafunc):653                assert "arg1" in metafunc.fixturenames654                metafunc.parametrize("arg1", [1], indirect=True)655            def pytest_funcarg__arg1(request):656                return request.param657            def pytest_funcarg__arg2(request, arg1):658                return 10 * arg1659            def test_func(arg2):660                assert arg2 == 10661        """)662        result = testdir.runpytest("-v", p)663        result.stdout.fnmatch_lines([664            "*test_func*1*PASS*",665            "*1 passed*"666        ])667    def test_parametrize_with_ids(self, testdir):668        testdir.makepyfile("""669            import pytest670            def pytest_generate_tests(metafunc):671                metafunc.parametrize(("a", "b"), [(1,1), (1,2)],672                                     ids=["basic", "advanced"])673            def test_function(a, b):674                assert a == b675        """)676        result = testdir.runpytest("-v")677        assert result.ret == 1678        result.stdout.fnmatch_lines_random([679            "*test_function*basic*PASSED",680            "*test_function*advanced*FAILED",681        ])682    def test_parametrize_without_ids(self, testdir):683        testdir.makepyfile("""684            import pytest685            def pytest_generate_tests(metafunc):686                metafunc.parametrize(("a", "b"),687                                     [(1,object()), (1.3,object())])688            def test_function(a, b):689                assert 1690        """)691        result = testdir.runpytest("-v")692        result.stdout.fnmatch_lines("""693            *test_function*1-b0*694            *test_function*1.3-b1*695        """)696    @pytest.mark.parametrize(("scope", "length"),697                             [("module", 2), ("function", 4)])698    def test_parametrize_scope_overrides(self, testdir, scope, length):699        testdir.makepyfile("""700            import pytest701            l = []702            def pytest_generate_tests(metafunc):703                if "arg" in metafunc.funcargnames:704                    metafunc.parametrize("arg", [1,2], indirect=True,705                                         scope=%r)706            def pytest_funcarg__arg(request):707                l.append(request.param)708                return request.param709            def test_hello(arg):710                assert arg in (1,2)711            def test_world(arg):712                assert arg in (1,2)713            def test_checklength():714                assert len(l) == %d715        """ % (scope, length))716        reprec = testdir.inline_run()717        reprec.assertoutcome(passed=5)718    def test_parametrize_issue323(self, testdir):719        testdir.makepyfile("""720            import pytest721            @pytest.fixture(scope='module', params=range(966))722            def foo(request):723                return request.param724            def test_it(foo):725                pass726            def test_it2(foo):727                pass728        """)729        reprec = testdir.inline_run("--collect-only")730        assert not reprec.getcalls("pytest_internalerror")731    def test_usefixtures_seen_in_generate_tests(self, testdir):732        testdir.makepyfile("""733            import pytest734            def pytest_generate_tests(metafunc):735                assert "abc" in metafunc.fixturenames736                metafunc.parametrize("abc", [1])737            @pytest.mark.usefixtures("abc")738            def test_function():739                pass740        """)741        reprec = testdir.runpytest()742        reprec.assert_outcomes(passed=1)743    def test_generate_tests_only_done_in_subdir(self, testdir):744        sub1 = testdir.mkpydir("sub1")745        sub2 = testdir.mkpydir("sub2")746        sub1.join("conftest.py").write(_pytest._code.Source("""747            def pytest_generate_tests(metafunc):748                assert metafunc.function.__name__ == "test_1"749        """))750        sub2.join("conftest.py").write(_pytest._code.Source("""751            def pytest_generate_tests(metafunc):752                assert metafunc.function.__name__ == "test_2"753        """))754        sub1.join("test_in_sub1.py").write("def test_1(): pass")755        sub2.join("test_in_sub2.py").write("def test_2(): pass")756        result = testdir.runpytest("-v", "-s", sub1, sub2, sub1)757        result.assert_outcomes(passed=3)758    def test_generate_same_function_names_issue403(self, testdir):759        testdir.makepyfile("""760            import pytest761            def make_tests():762                @pytest.mark.parametrize("x", range(2))763                def test_foo(x):764                    pass765                return test_foo766            test_x = make_tests()767            test_y = make_tests()768        """)769        reprec = testdir.runpytest()770        reprec.assert_outcomes(passed=4)771    @pytest.mark.issue463772    @pytest.mark.parametrize('attr', ['parametrise', 'parameterize',773                                     'parameterise'])774    def test_parametrize_misspelling(self, testdir, attr):775        testdir.makepyfile("""776            import pytest777            @pytest.mark.{0}("x", range(2))778            def test_foo(x):779                pass780        """.format(attr))781        reprec = testdir.inline_run('--collectonly')782        failures = reprec.getfailures()783        assert len(failures) == 1784        expectederror = "MarkerError: test_foo has '{0}', spelling should be 'parametrize'".format(attr)785        assert expectederror in failures[0].longrepr.reprcrash.message786class TestMarkersWithParametrization:787    pytestmark = pytest.mark.issue308788    def test_simple_mark(self, testdir):789        s = """790            import pytest791            @pytest.mark.foo792            @pytest.mark.parametrize(("n", "expected"), [793                (1, 2),794                pytest.mark.bar((1, 3)),795                (2, 3),796            ])797            def test_increment(n, expected):798                assert n + 1 == expected799        """800        items = testdir.getitems(s)801        assert len(items) == 3802        for item in items:803            assert 'foo' in item.keywords804        assert 'bar' not in items[0].keywords805        assert 'bar' in items[1].keywords806        assert 'bar' not in items[2].keywords807    def test_select_based_on_mark(self, testdir):808        s = """809            import pytest810            @pytest.mark.parametrize(("n", "expected"), [811                (1, 2),812                pytest.mark.foo((2, 3)),813                (3, 4),814            ])815            def test_increment(n, expected):816                assert n + 1 == expected817        """818        testdir.makepyfile(s)819        rec = testdir.inline_run("-m", 'foo')820        passed, skipped, fail = rec.listoutcomes()821        assert len(passed) == 1822        assert len(skipped) == 0823        assert len(fail) == 0824    @pytest.mark.xfail(reason="is this important to support??")825    def test_nested_marks(self, testdir):826        s = """827            import pytest828            mastermark = pytest.mark.foo(pytest.mark.bar)829            @pytest.mark.parametrize(("n", "expected"), [830                (1, 2),831                mastermark((1, 3)),832                (2, 3),833            ])834            def test_increment(n, expected):835                assert n + 1 == expected836        """837        items = testdir.getitems(s)838        assert len(items) == 3839        for mark in ['foo', 'bar']:840            assert mark not in items[0].keywords841            assert mark in items[1].keywords842            assert mark not in items[2].keywords843    def test_simple_xfail(self, testdir):844        s = """845            import pytest846            @pytest.mark.parametrize(("n", "expected"), [847                (1, 2),848                pytest.mark.xfail((1, 3)),849                (2, 3),850            ])851            def test_increment(n, expected):852                assert n + 1 == expected853        """854        testdir.makepyfile(s)855        reprec = testdir.inline_run()856        # xfail is skip??857        reprec.assertoutcome(passed=2, skipped=1)858    def test_simple_xfail_single_argname(self, testdir):859        s = """860            import pytest861            @pytest.mark.parametrize("n", [862                2,863                pytest.mark.xfail(3),864                4,865            ])866            def test_isEven(n):867                assert n % 2 == 0868        """869        testdir.makepyfile(s)870        reprec = testdir.inline_run()871        reprec.assertoutcome(passed=2, skipped=1)872    def test_xfail_with_arg(self, testdir):873        s = """874            import pytest875            @pytest.mark.parametrize(("n", "expected"), [876                (1, 2),877                pytest.mark.xfail("True")((1, 3)),878                (2, 3),879            ])880            def test_increment(n, expected):881                assert n + 1 == expected882        """883        testdir.makepyfile(s)884        reprec = testdir.inline_run()885        reprec.assertoutcome(passed=2, skipped=1)886    def test_xfail_with_kwarg(self, testdir):887        s = """888            import pytest889            @pytest.mark.parametrize(("n", "expected"), [890                (1, 2),891                pytest.mark.xfail(reason="some bug")((1, 3)),892                (2, 3),893            ])894            def test_increment(n, expected):895                assert n + 1 == expected896        """897        testdir.makepyfile(s)898        reprec = testdir.inline_run()899        reprec.assertoutcome(passed=2, skipped=1)900    def test_xfail_with_arg_and_kwarg(self, testdir):901        s = """902            import pytest903            @pytest.mark.parametrize(("n", "expected"), [904                (1, 2),905                pytest.mark.xfail("True", reason="some bug")((1, 3)),906                (2, 3),907            ])908            def test_increment(n, expected):909                assert n + 1 == expected910        """911        testdir.makepyfile(s)912        reprec = testdir.inline_run()913        reprec.assertoutcome(passed=2, skipped=1)914    def test_xfail_passing_is_xpass(self, testdir):915        s = """916            import pytest917            @pytest.mark.parametrize(("n", "expected"), [918                (1, 2),919                pytest.mark.xfail("sys.version > 0", reason="some bug")((2, 3)),920                (3, 4),921            ])922            def test_increment(n, expected):923                assert n + 1 == expected924        """925        testdir.makepyfile(s)926        reprec = testdir.inline_run()927        # xpass is fail, obviously :)928        reprec.assertoutcome(passed=2, failed=1)929    def test_parametrize_called_in_generate_tests(self, testdir):930        s = """931            import pytest932            def pytest_generate_tests(metafunc):933                passingTestData = [(1, 2),934                                   (2, 3)]935                failingTestData = [(1, 3),936                                   (2, 2)]937                testData = passingTestData + [pytest.mark.xfail(d)938                                  for d in failingTestData]939                metafunc.parametrize(("n", "expected"), testData)940            def test_increment(n, expected):941                assert n + 1 == expected942        """943        testdir.makepyfile(s)944        reprec = testdir.inline_run()945        reprec.assertoutcome(passed=2, skipped=2)946    @pytest.mark.issue290947    def test_parametrize_ID_generation_string_int_works(self, testdir):948        testdir.makepyfile("""949            import pytest950            @pytest.fixture951            def myfixture():952                return 'example'953            @pytest.mark.parametrize(954                'limit', (0, '0'))955            def test_limit(limit, myfixture):956                return957        """)958        reprec = testdir.inline_run()...test.py
Source:test.py  
...11c = Value(3.1264e2, 1.268)12A = np.array([[a, a], [b, b], [c, c]])13B = Value([a.x] * 5, a.ux)14C = Value([b.x] * 5, [b.ux] * 5)15@pytest.mark.parametrize('v, x', [16    (a, a.x),17    (A, np.array([[a.x, a.x], [b.x, b.x], [c.x, c.x]])),18    (B, a.x),19    (a.x, a.x)],20    ids=['Single', 'Array of values', 'Value array', 'Number'])21def test_val(v, x):22    assert np.all(val(v) == x)23@pytest.mark.parametrize('v, x', [24    (a, a.ux),25    (A, np.array([[a.ux, a.ux], [b.ux, b.ux], [c.ux, c.ux]])),26    (B, a.ux),27    (a.x, 0)],28    ids=['Single', 'Array of values', 'Value array', 'Number'])29def test_unc(v, x):30    assert np.all(unc(v) == x)31def test_set_unc():32    v = set_unc(0.234, 0.0052)33    assert isinstance(v, Value)34    assert v.x == 0.23435    assert v.ux == 0.005236    v = set_unc(a, 0.0052)37    assert isinstance(v, Value)38    assert v.x == a.x39    assert v.ux == 0.005240    v = set_unc([0.234] * 8, 0.0052)41    assert isinstance(v, np.ndarray)42    assert v.shape == (8, )43    assert np.mean(unc(v)) == 0.005244    v = set_unc([0.234] * 8, [0.0052] * 8)45    assert isinstance(v, np.ndarray)46    assert v.shape == (8, )47    assert np.mean(unc(v)) == 0.005248    with pytest.raises(ValueError):49        set_unc(np.random.random((3, 2, 1)), np.random.random((4, 2, 1)))50def test_constructor():51    v = Value(3.1415, 0.0012)52    assert v.x == 3.1415 == v.val53    assert v.ux == 0.0012 == v.unc54    with pytest.raises(ValueError):55        Value(3.14, -0.28)56    V = Value([3.1415] * 8, 0.0012)57    assert V.x.shape == (8, )58    assert V.ux.shape == (8, )59    assert np.mean(V.ux) == 0.001260    V = Value([3.1415] * 8, [0.0012] * 8)61    assert V.x.shape == (8, )62    assert V.ux.shape == (8, )63    assert np.mean(V.ux) == 0.001264    with pytest.raises(ValueError):65        Value(np.random.random((3, 2, 1)), np.random.random((4, 2, 1)))66    with pytest.raises(ValueError):67        Value(1j, 0)68        Value(1, 2j)69@pytest.mark.parametrize('x, y, r', [70    (a.x, a, False),71    (a, a.x, False),72    (a, Value(a.x, a.ux * 5), False),73    (b, a, True),74    (a, a - 0.0001, False),75    (A, A, False),76    (B, C, False)],77    ids=['Right', 'Left', 'Both', 'Different', 'Within unc', 'Array eq', 'Array dif'])78def test_smaller(x, y, r):79    assert np.all((x < y) == r)80@pytest.mark.parametrize('x, y, r', [81    (1, a, Value(a.x + 1, a.ux)),82    (a, 1, Value(a.x + 1, a.ux)),83    (a, b, Value(a.x + b.x, np.hypot(a.ux, b.ux))),84    (1, A, np.array([[a+1, a+1], [b+1, b+1], [c+1, c+1]])),85    (a, A, np.array([[a+a, a+a], [b+a, b+a], [c+a, c+a]])),86    (1, B, Value(1 + B.x, B.ux)),87    (a, B, Value(a.x + B.x, np.hypot(a.ux, B.ux))),88    (A, A, np.array([[a+a, a+a], [b+b, b+b], [c+c, c+c]])),89    (B, C, Value(B.x + C.x, np.hypot(B.ux, C.ux))),90    ],91    ids=['Right', 'Left', 'Both', 'Number + Array', 'Value + Array', 'Array of values',92         'Number + Valued array', 'Value + Valued array', 'Valued array'])93def test_add(x, y, r):94    z = x + y95    assert np.all(val(z) == val(r))96    assert np.all(unc(z) == unc(r))97@pytest.mark.parametrize('x, y, r', [98    (1, a, Value(a.x + 1, a.ux)),99    (a.copy(), 1, Value(a.x + 1, a.ux)),100    (a.copy(), b, Value(a.x + b.x, np.hypot(a.ux, b.ux))),101    (B.copy(), C, Value(B.x + C.x, np.hypot(B.ux, C.ux))),102    ],103    ids=['Right', 'Left', 'Both', 'Array'])104def test_iadd(x, y, r):105    x += y106    assert isinstance(x, Value)107    assert np.all(x.x == r.x)108    assert np.all(x.ux == r.ux)109@pytest.mark.parametrize('x, y, r', [110    (1, a, Value(1 - a.x, a.ux)),111    (a, 1, Value(a.x - 1, a.ux)),112    (a, b, Value(a.x - b.x, np.hypot(a.ux, b.ux))),113    (A, A, np.array([[a-a, a-a], [b-b, b-b], [c-c, c-c]])),114    (B, C, Value(B.x - C.x, np.hypot(B.ux, C.ux))),115    ],116    ids=['Right', 'Left', 'Both', 'Array of values', 'Valued array'])117def test_sub(x, y, r):118    z = x - y119    assert np.all(val(z) == val(r))120    assert np.all(unc(z) == unc(r))121@pytest.mark.parametrize('x, y, r', [122    (1, a, Value(1 - a.x, a.ux)),123    (a.copy(), 1, Value(a.x - 1, a.ux)),124    (a.copy(), b, Value(a.x - b.x, np.hypot(a.ux, b.ux))),125    (B.copy(), C, Value(B.x - C.x, np.hypot(B.ux, C.ux))),126    ],127    ids=['Right', 'Left', 'Both', 'Array'])128def test_isub(x, y, r):129    x -= y130    assert isinstance(x, Value)131    assert np.all(x.x == r.x)132    assert np.all(x.ux == r.ux)133@pytest.mark.parametrize('x, y, r', [134    (2, a, Value(2 * a.x, 2 * a.ux)),135    (a, 2, Value(a.x * 2, 2 * a.ux)),136    (a, b, Value(a.x * b.x, np.hypot(a.ux * b.x, a.x * b.ux))),137    (A, A, np.array([[a*a, a*a], [b*b, b*b], [c*c, c*c]])),138    (B, C, Value(B.x * C.x, np.hypot(B.ux * C.x, B.x * C.ux))),139    ],140    ids=['Right', 'Left', 'Both', 'Array of values', 'Valued array'])141def test_mul(x, y, r):142    z = x * y143    assert np.all(val(z) == val(r))144    assert np.all(unc(z) == unc(r))145@pytest.mark.parametrize('x, y, r', [146    (2, a, Value(2 * a.x, 2 * a.ux)),147    (a.copy(), 2, Value(a.x * 2, 2 * a.ux)),148    (a.copy(), b, Value(a.x * b.x, np.hypot(a.ux * b.x, a.x * b.ux))),149    (B.copy(), C, Value(B.x * C.x, np.hypot(B.ux * C.x, B.x * C.ux))),150    ],151    ids=['Right', 'Left', 'Both', 'Array'])152def test_imul(x, y, r):153    x *= y154    assert isinstance(x, Value)155    assert np.all(x.x == r.x)156    assert np.all(x.ux == r.ux)157@pytest.mark.parametrize('x, y, r', [158    (2, a, Value(2 / a.x, 2 * a.ux / a.x**2)),159    (a, 2, Value(a.x / 2, a.ux / 2)),160    (a, b, Value(a.x / b.x, np.hypot(a.ux / b.x, a.x * b.ux / b.x**2))),161    (B, C, Value(B.x / C.x, np.hypot(B.ux / C.x, B.x * C.ux / C.x**2))),162    ],163    ids=['Right', 'Left', 'Both', 'Array'])164def test_div(x, y, r):165    z = x / y166    assert isinstance(z, Value)167    assert np.all(z.x == r.x)168    assert np.all(z.ux == r.ux)169@pytest.mark.parametrize('x, y, r', [170    (2, a, Value(2 // a.x, 2 * a.ux // a.x**2)),171    (a, 2, Value(a.x // 2, a.ux // 2)),172    (a, b, Value(a.x // b.x, np.hypot(a.ux // b.x, a.x * b.ux // b.x**2))),173    (B, C, Value(B.x // C.x, np.hypot(B.ux // C.x, B.x * C.ux // C.x**2))),174    ],175    ids=['Right', 'Left', 'Both', 'Array'])176def test_floordiv(x, y, r):177    z = x // y178    assert isinstance(z, Value)179    assert np.all(z.x == r.x)180    assert np.all(z.ux == r.ux)181@pytest.mark.parametrize('x, y, r', [182    (2, a, Value(2 / a.x, 2 * a.ux / a.x**2)),183    (a.copy(), 2, Value(a.x / 2, a.ux / 2)),184    (a.copy(), b, Value(a.x / b.x, np.hypot(a.ux / b.x, a.x * b.ux / b.x**2))),185    (B.copy(), C, Value(B.x / C.x, np.hypot(B.ux / C.x, B.x * C.ux / C.x**2))),186    ],187    ids=['Right', 'Left', 'Both', 'Array'])188def test_idiv(x, y, r):189    x /= y190    assert isinstance(x, Value)191    assert np.all(x.x == r.x)192    assert np.all(x.ux == r.ux)193@pytest.mark.parametrize('x, y, r', [194    (2, a, Value(2 ** a.x, abs(2**a.x * np.log(2) * a.ux))),195    (a, 2, Value(a.x ** 2, abs(2 * a.x**(2 - 1)) * a.ux)),196    (a, b, Value(a.x ** b.x, np.hypot(b.x * a.x**(b.x-1) * a.ux, a.x**b.x * np.log(np.abs(a.x)) * b.ux))),197    (B, C, Value(B.x ** C.x, np.hypot(C.x * B.x**(C.x-1) * B.ux, B.x**C.x * np.log(np.abs(B.x)) * C.ux)))198    ],199    ids=['Right', 'Left', 'Both', 'Array'])200def test_pow(x, y, r):201    z = x**y202    assert isinstance(z, Value)203    assert np.all(z.x == r.x)204    assert np.all(z.ux == r.ux)205@pytest.mark.parametrize('x, r', [206    (a, Value(-a.x, a.ux)),207    (A, np.array([[-a, -a], [-b, -b], [-c, -c]])),208    (B, Value(-B.x, B.ux))209    ], ids=['Value', 'Array of values', 'Value array'])210def test_neg(x, r):211    z = -x212    assert np.all(val(z) == val(r))213    assert np.all(unc(z) == unc(r))214@pytest.mark.parametrize('x, r', [215    (b, Value(abs(b.x), b.ux)),216    (A, np.array([[a, a], [-b, -b], [c, c]])),217    (B, Value(B.x, B.ux))218    ], ids=['Value', 'Array of values', 'Value array'])219def test_abs(x, r):220    z = abs(x)221    assert np.all(val(z) == val(r))222    assert np.all(unc(z) == unc(r))223@pytest.mark.parametrize('x, r', [224    (a, Value(1 / a.x, a.ux / a.x**2)),225    (A, np.array([[1 / a, 1 / a], [1 / b, 1 / b], [1 / c, 1 / c]])),226    (B, Value(1 / B.x, B.ux / B.x**2))227    ], ids=['Value', 'Array of values', 'Value array'])228def test_invert(x, r):229    z = ~x230    assert np.all(val(z) == val(r))231    assert np.all(unc(z) == unc(r))232@pytest.mark.parametrize('x, y, r', [233    (a.x, a, True),234    (a, a.x, True),235    (a, Value(a.x, a.ux * 5), True),236    (a, b, False),237    (a, a + 0.0001, False),238    (A, A, True),239    (B, C, False)],240    ids=['Right', 'Left', 'Both', 'Different', 'Within unc', 'Array eq', 'Array dif'])241def test_equality(x, y, r):242    assert np.all((x == y) == r)243    assert np.all((x != y) != r)244@pytest.mark.parametrize('x, y, r', [245    (a.x, a, True),246    (a, a.x, True),247    (a, Value(a.x, a.ux * 5), True),248    (b, a, False),249    (a, a - 0.0001, True),250    (A, A, True),251    (B, C, True)],252    ids=['Right', 'Left', 'Both', 'Different', 'Within unc', 'Array eq', 'Array dif'])253def test_greater_equal(x, y, r):254    assert np.all((x >= y) == r)255@pytest.mark.parametrize('x, y, r', [256    (a.x, a, False),257    (a, a.x, False),258    (a, Value(a.x, a.ux * 5), False),259    (b, a, False),260    (a, a - 0.0001, True),261    (A, A, False),262    (B, C, True)],263    ids=['Right', 'Left', 'Both', 'Different', 'Within unc', 'Array eq', 'Array dif'])264def test_greater(x, y, r):265    assert np.all((x > y) == r)266@pytest.mark.parametrize('x, y, r', [267    (a.x, a, True),268    (a, a.x, True),269    (a, Value(a.x, a.ux * 5), True),270    (b, a, True),271    (a, a - 0.0001, False),272    (A, A, True),273    (B, C, False)],274    ids=['Right', 'Left', 'Both', 'Different', 'Within unc', 'Array eq', 'Array dif'])275def test_smaller_equal(x, y, r):276    assert np.all((x <= y) == r)277@pytest.mark.parametrize('x, y, r', [278    (1, Value(1, 2), True),279    (1, Value(0.75, 0.05), False),280    (0.8, Value(0.75, 0.08), True),281    (0.8, Value(0.75, 0.05), True),282    (0.7, Value(0.75, 0.05), True),283    (Value(0.8, 0.2), Value(0.7, 0.04), False)],284    ids=['Inside', 'Outside', 'Inside float', 'Over upper limit', 'Over lower limit', 'Outside second value'])285def test_contains(x, y, r):286    assert (x in y) == r287@pytest.mark.parametrize('x, s', [288    (Value(2, 2), '2.0 ± 2.0'),289    (Value(0.2, 2), '0.2 ± 2.0'),290    (Value(0.2, 0.002385), '(200.0 ± 2.4)·10^-3'),291    (Value(0.02414, 0.002345), '(24.1 ± 2.3)·10^-3'),292    (Value(0.02415, 0.002365), '(24.2 ± 2.4)·10^-3')])293def test_print(x, s):294    assert str(x) == s295@pytest.mark.parametrize('x, p, r', [296    (0.145e-6, -8, 0.14e-6),297    (0.001456, -4, 0.0015),298    (0.0006666, -5, 0.00067),299    (0.123, -2, 0.12),300    (1, -1, 1.0),301    (22.22, 0, 22.0),302    (7684.65, 2, 77e2),303    (17.8e8, 8, 18e8)])304def test_round(x, p, r):305    v = Value(x, 10.0**p)306    assert abs(round(v) - r) < ϵ307@pytest.mark.parametrize('x, p, r', [308    (0.145e-6, -8, 0.14e-6),309    (0.001456, -4, 0.0014),310    (0.0006666, -5, 0.00066),311    (0.123, -2, 0.12),312    (1, -1, 1.0),313    (22.22, 0, 22.0),314    (7684.65, 2, 76e2),315    (17.8e8, 8, 17e8)])316def test_trunc(x, p, r):317    v = Value(x, 10.0**p)318    assert abs(trunc(v) - r) < ϵ319@pytest.mark.parametrize('x, p, r', [320    (0.145e-6, -8, 0.14e-6),321    (0.001456, -4, 0.0014),322    (0.0006666, -5, 0.00066),323    (0.123, -2, 0.12),324    (1, -1, 1.0),325    (22.22, 0, 22.0),326    (7684.65, 2, 76e2),327    (17.8e8, 8, 17e8)])328def test_floor(x, p, r):329    v = Value(x, 10.0**p)330    assert abs(floor(v) - r) < ϵ331@pytest.mark.parametrize('x, p, r', [332    (0.145e-6, -8, 0.15e-6),333    (0.001456, -4, 0.0015),334    (0.0006666, -5, 0.00067),335    (0.123, -2, 0.13),336    (1, -1, 1.0),337    (22.22, 0, 23.0),338    (7684.65, 2, 77e2),339    (17.8e8, 8, 18e8)])340def test_ceil(x, p, r):341    v = Value(x, 10.0**p)342    assert abs(ceil(v) - r) < ϵ343def test_convert_to_number():344    assert complex(a) == a.x + 0j345    assert float(a) == a.x346    assert int(a) == 3347    assert bool(a)348    assert not bool(Value(0, 0.0028))349def test_copy():350    v = a.copy()351    assert v.x == a.x352    assert v.ux == a.ux353@pytest.mark.parametrize('ux, acc', [354    (0.145e-6, -7),355    (0.001456, -3),356    (0.0006666, -4),357    (0.123, -1),358    (1, 0),359    (22.22, 1),360    (7684.65, 3),361    (17.8e8, 9)])362def test_precision(ux, acc):363    v = Value(1, ux)364    assert v.precision() == acc365@pytest.mark.parametrize('x', [366    a, abs(A), B367], ids=['Value', 'Array of values', 'Valued array'])368def test_log(x):369    z = np.log(x)370    assert np.all(val(z) == np.log(val(x)))371    assert np.all(unc(z) == unc(x) / val(x))372@pytest.mark.parametrize('x', [373    a, abs(A), B374], ids=['Value', 'Array of values', 'Valued array'])375def test_log2(x):376    z = np.log2(x)377    assert np.all(val(z) == np.log2(val(x)))378    assert np.all(unc(z) == unc(x) / (val(x) * np.log(2)))379@pytest.mark.parametrize('x', [380    a, abs(A), B381], ids=['Value', 'Array of values', 'Valued array'])382def test_log10(x):383    z = np.log10(x)384    assert np.all(val(z) == np.log10(val(x)))385    assert np.all(unc(z) == unc(x) / (val(x) * np.log(10)))386@pytest.mark.parametrize('x', [387    a, abs(A), B388], ids=['Value', 'Array of values', 'Valued array'])389def test_log1p(x):390    z = np.log1p(x)391    assert np.all(val(z) == np.log1p(val(x)))392    assert np.all(unc(z) == unc(x) / (val(x) + 1))393@pytest.mark.parametrize('x', [394    a, b, abs(A), B395], ids=['Value', 'Negative', 'Array of values', 'Valued array'])396def test_exp(x):397    z = np.exp(x)398    assert np.all(val(z) == np.exp(val(x)))399    assert np.all(unc(z) == unc(x) * np.exp(val(x)))400@pytest.mark.parametrize('x', [401    a, b, abs(A), B402], ids=['Value', 'Negative', 'Array of values', 'Valued array'])403def test_exp2(x):404    z = np.exp2(x)405    assert np.all(val(z) == np.exp2(val(x)))406    assert np.all(unc(z) == unc(x) * np.exp2(val(x)) * np.log(2))407@pytest.mark.parametrize('x', [408    a, b, abs(A), B409], ids=['Value', 'Nagetive', 'Array of values', 'Valued array'])410def test_expm1(x):411    z = np.expm1(x)412    assert np.all(val(z) == np.expm1(val(x)))413    assert np.all(unc(z) == unc(x) * np.exp(val(x)))414@pytest.mark.parametrize('x', [415    a, b, abs(A), B416], ids=['Value', 'Negative', 'Array of values', 'Valued array'])417def test_sin(x):418    z = np.sin(x)419    assert np.all(val(z) == np.sin(val(x)))420    assert np.all(unc(z) == np.abs(unc(x) * np.cos(val(x))))421@pytest.mark.parametrize('x', [422    a, b, abs(A), B423], ids=['Value', 'Negative', 'Array of values', 'Valued array'])424def test_cos(x):425    z = np.cos(x)426    assert np.all(val(z) == np.cos(val(x)))427    assert np.all(unc(z) == np.abs(unc(x) * np.sin(val(x))))428@pytest.mark.parametrize('x', [429    a, b, abs(A), B430], ids=['Value', 'Negative', 'Array of values', 'Valued array'])431def test_tan(x):432    z = np.tan(x)433    assert np.all(val(z) == np.tan(val(x)))434    assert np.all(unc(z) == np.abs(unc(x) / np.cos(val(x))**2))435@pytest.mark.parametrize('x', [436    a / 10, b / 10, abs(A) / 1000, B / 10437], ids=['Value', 'Negative', 'Array of values', 'Valued array'])438def test_arcsin(x):439    z = np.arcsin(x)440    assert np.all(val(z) == np.arcsin(val(x)))441    assert np.all(unc(z) == np.abs(unc(x) / np.sqrt(1 - val(x)**2)))442@pytest.mark.parametrize('x', [443    a / 10, b / 10, abs(A) / 1000, B / 10444], ids=['Value', 'Negative', 'Array of values', 'Valued array'])445def test_arccos(x):446    z = np.arccos(x)447    assert np.all(val(z) == np.arccos(val(x)))448    assert np.all(unc(z) == np.abs(unc(x) / np.sqrt(1 - val(x)**2)))449@pytest.mark.parametrize('x', [450    a, b, abs(A), B451], ids=['Value', 'Negative', 'Array of values', 'Valued array'])452def test_arctan(x):453    z = np.arctan(x)454    assert np.all(val(z) == np.arctan(val(x)))455    assert np.all(unc(z) == np.abs(unc(x) / (1 + val(x)**2)))456@pytest.mark.parametrize('x', [457    a, b, abs(A), B458], ids=['Value', 'Negative', 'Array of values', 'Valued array'])459def test_sinh(x):460    z = np.sinh(x)461    assert np.all(val(z) == np.sinh(val(x)))462    assert np.all(unc(z) == np.abs(unc(x) * np.cosh(val(x))))463@pytest.mark.parametrize('x', [464    a, b, abs(A), B465], ids=['Value', 'Negative', 'Array of values', 'Valued array'])466def test_cosh(x):467    z = np.cosh(x)468    assert np.all(val(z) == np.cosh(val(x)))469    assert np.all(unc(z) == np.abs(unc(x) * np.sinh(val(x))))470@pytest.mark.parametrize('x', [471    a, b, abs(A), B472], ids=['Value', 'Negative', 'Array of values', 'Valued array'])473def test_tanh(x):474    z = np.tanh(x)475    assert np.all(val(z) == np.tanh(val(x)))476    assert np.all(unc(z) == np.abs(unc(x) / np.cosh(val(x))**2))477@pytest.mark.parametrize('x', [478    a / 10, b / 10, abs(A) / 1000, B / 10479], ids=['Value', 'Negative', 'Array of values', 'Valued array'])480def test_arcsinh(x):481    z = np.arcsinh(x)482    assert np.all(val(z) == np.arcsinh(val(x)))483    assert np.all(unc(z) == np.abs(unc(x) / np.sqrt(1 + val(x)**2)))484@pytest.mark.parametrize('x', [485    a, abs(A), B486], ids=['Value', 'Array of values', 'Valued array'])487def test_arccosh(x):488    z = np.arccosh(x)489    assert np.all(val(z) == np.arccosh(val(x)))490    assert np.all(unc(z) == np.abs(unc(x) / np.sqrt(val(x)**2 - 1)))491@pytest.mark.parametrize('x', [492    a / 10, b / 10, abs(A) / 1000, B / 10493], ids=['Value', 'Negative', 'Array of values', 'Valued array'])494def test_arctanh(x):495    z = np.arctanh(x)496    assert np.all(val(z) == np.arctanh(val(x)))497    assert np.all(unc(z) == np.abs(unc(x) / (1 - val(x)**2)))498@pytest.mark.parametrize('x', [499    a, abs(A), B500], ids=['Value', 'Array of values', 'Valued array'])501def test_sqrt(x):502    z = np.sqrt(x)503    assert np.all(val(z) == np.sqrt(val(x)))504    assert np.all(unc(z) == np.abs(unc(x) / (2 * np.sqrt(val(x)))))505@pytest.mark.parametrize('x', [506    a, b, abs(A), B507], ids=['Value', 'Negative', 'Array of values', 'Valued array'])508def test_cbrt(x):509    z = np.cbrt(x)510    assert np.all(val(z) == np.cbrt(val(x)))511    assert np.all(unc(z) == np.abs(unc(x) / (3 * np.cbrt(val(x))**2)))512@pytest.mark.parametrize('x, y, res', [513    (2, Value(3, 2), 2),514    (2, Value(1, 0.2), 1),515    (Value(2, 1), Value(1, 0.2), 1)],516    ids=['Number', 'Value', "Two values"])517def test_min(x, y, res):518    assert min(x, y) == res519@pytest.mark.parametrize('x, y, res', [520    (2, Value(3, 2), 3),521    (2, Value(1, 0.2), 2),522    (Value(2, 1), Value(1, 0.2), 2)],523    ids=['Number', 'Value', "Two values"])524def test_max(x, y, res):...test_int32_find_max.py
Source:test_int32_find_max.py  
...4def test_0_compile_pymod_test_mod(pmgen_py_compile):5        pmgen_py_compile(__name__)6ndims_to_test = [1, 2, 3, 4]7# for loop, values8@pytest.mark.parametrize("ndim", ndims_to_test)9@pytest.mark.parametrize("nim_test_proc_name", [10        "int32FindMaxForLoopValues",11        "int32FindMaxForLoopValues_m",12])13def test_int32FindMaxForLoopValues(pymod_test_mod, seeded_random_number_generator,14        ndim, nim_test_proc_name):15    arg = array_utils.get_random_Nd_array_of_ndim_and_type(ndim, numpy.int32)16    print ("\nrandom number seed = %d\nndim = %d, shape = %s\narg =\n%s" % \17            (seeded_random_number_generator, ndim, arg.shape, arg))18    expectedRes = arg.max()19    res = getattr(pymod_test_mod, nim_test_proc_name)(arg)20    print ("res = %s" % str(res))21    assert res == expectedRes22# while loop, Forward Iter23@pytest.mark.parametrize("ndim", ndims_to_test)24def test_int32FindMaxWhileLoopForwardIter(pymod_test_mod, seeded_random_number_generator, ndim):25    arg = array_utils.get_random_Nd_array_of_ndim_and_type(ndim, numpy.int32)26    print ("\nrandom number seed = %d\nndim = %d, shape = %s\narg =\n%s" % \27            (seeded_random_number_generator, ndim, arg.shape, arg))28    expectedRes = arg.max()29    res = pymod_test_mod.int32FindMaxWhileLoopForwardIter(arg)30    print ("res = %s" % str(res))31    assert res == expectedRes32# for loop, Forward Iter33@pytest.mark.parametrize("ndim", ndims_to_test)34@pytest.mark.parametrize("nim_test_proc_name", [35        "int32FindMaxForLoopForwardIter",36        "int32FindMaxForLoopForwardIter_m",37        "int32FindMaxForLoopForwardIter_i",38])39def test_int32FindMaxForLoopForwardIter(pymod_test_mod, seeded_random_number_generator,40        ndim, nim_test_proc_name):41    arg = array_utils.get_random_Nd_array_of_ndim_and_type(ndim, numpy.int32)42    print ("\nnim_test_proc_name = %s" % nim_test_proc_name)43    print ("random number seed = %d\nndim = %d, shape = %s\narg =\n%s" % \44            (seeded_random_number_generator, ndim, arg.shape, arg))45    expectedRes = arg.max()46    res = getattr(pymod_test_mod, nim_test_proc_name)(arg)47    print ("res = %s" % str(res))48    assert res == expectedRes49# while loop, Rand Acc Iter50@pytest.mark.parametrize("ndim", ndims_to_test)51@pytest.mark.parametrize("nim_test_proc_name", [52        "int32FindMaxWhileLoopRandaccIterDeref",53        "int32FindMaxWhileLoopRandaccIterIndex0",54        "int32FindMaxWhileLoopRandaccIterDerefPlusZeroOffset",55        "int32FindMaxWhileLoopRandaccIterDerefMinusZeroOffset",56        "int32FindMaxWhileLoopRandaccIterIndexVsPlusOffset_1",57        "int32FindMaxWhileLoopRandaccIterIndexVsPlusOffset_2",58        "int32FindMaxWhileLoopRandaccIterIndexVsPlusOffset_3",59        "int32FindMaxWhileLoopRandaccIterIndexVsPlusOffset_4",60        "int32FindMaxWhileLoopRandaccIterIndexVsPlusOffset_5",61        "int32FindMaxWhileLoopRandaccIterIndexVsMinusOffset_1",62        "int32FindMaxWhileLoopRandaccIterIndexVsMinusOffset_2",63        "int32FindMaxWhileLoopRandaccIterIndexVsMinusOffset_3",64        "int32FindMaxWhileLoopRandaccIterIndexVsMinusOffset_4",65        "int32FindMaxWhileLoopRandaccIterIndexVsMinusOffset_5",66])67def test_int32FindMaxWhileLoopRandaccIterDerefAlternatives(pymod_test_mod, seeded_random_number_generator,68        ndim, nim_test_proc_name):69    arg = array_utils.get_random_Nd_array_of_ndim_and_type(ndim, numpy.int32)70    print ("\nnim_test_proc_name = %s" % nim_test_proc_name)71    print ("random number seed = %d\nndim = %d, shape = %s\narg =\n%s" % \72            (seeded_random_number_generator, ndim, arg.shape, arg))73    expectedRes = arg.max()74    res = getattr(pymod_test_mod, nim_test_proc_name)(arg)75    print ("res = %s" % str(res))76    assert res == expectedRes77@pytest.mark.parametrize("ndim", ndims_to_test)78@pytest.mark.parametrize("nim_test_proc_name", [79        "int32FindMaxWhileLoopRandaccIterIndexVsPlusOffsetK",80        "int32FindMaxWhileLoopRandaccIterIndexVsMinusOffsetK",81])82@pytest.mark.parametrize("k", [-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5])83def test_int32FindMaxWhileLoopRandaccIterDerefKParamAlternatives(pymod_test_mod, seeded_random_number_generator,84        ndim, nim_test_proc_name, k):85    arg = array_utils.get_random_Nd_array_of_ndim_and_type(ndim, numpy.int32)86    print ("\nnim_test_proc_name = %s, k = %d" % (nim_test_proc_name, k))87    print ("random number seed = %d\nndim = %d, shape = %s\narg =\n%s" % \88            (seeded_random_number_generator, ndim, arg.shape, arg))89    expectedRes = arg.max()90    res = getattr(pymod_test_mod, nim_test_proc_name)(arg, k)91    print ("res = %s" % str(res))92    assert res == expectedRes93@pytest.mark.parametrize("ndim", ndims_to_test)94@pytest.mark.parametrize("nim_test_proc_name", [95        "int32FindMaxWhileLoopRandaccIterDeltaN_1",96        "int32FindMaxWhileLoopRandaccIterDeltaN_2",97])98@pytest.mark.parametrize("n", [1, 2, 3, 4, 5, 10, 100, 1000])99def test_int32FindMaxWhileLoopRandaccIterDeltaN_1(pymod_test_mod, seeded_random_number_generator,100        ndim, nim_test_proc_name, n):101    arg = array_utils.get_random_Nd_array_of_ndim_and_type(ndim, numpy.int32)102    print ("\nnim_test_proc_name = %s, n = %d" % (nim_test_proc_name, n))103    print ("random number seed = %d\nndim = %d, shape = %s\narg =\n%s" % \104            (seeded_random_number_generator, ndim, arg.shape, arg))105    argDeltaN = arg.flat[::n]106    print ("arg.flat[::n] =\n%s" % argDeltaN)107    expectedRes = argDeltaN.max()108    res = getattr(pymod_test_mod, nim_test_proc_name)(arg, n)109    print ("res = %s" % str(res))110    assert res == expectedRes111@pytest.mark.parametrize("ndim", ndims_to_test)112@pytest.mark.parametrize("nim_test_proc_name", [113        "int32FindMaxWhileLoopRandaccIterExcludeFirstM_1",114        "int32FindMaxWhileLoopRandaccIterExcludeFirstM_2",115])116@pytest.mark.parametrize("m", [1, 2, 3, 4, 5, 10, 100, 1000])117def test_int32FindMaxWhileLoopRandaccIterExcludeFirstM_1(pymod_test_mod, seeded_random_number_generator,118        ndim, nim_test_proc_name, m):119    dtype = numpy.int32120    arg = array_utils.get_random_Nd_array_of_ndim_and_type(ndim, dtype)121    print ("\nnim_test_proc_name = %s, m = %d" % (nim_test_proc_name, m))122    print ("random number seed = %d\nndim = %d, shape = %s\narg =\n%s" % \123            (seeded_random_number_generator, ndim, arg.shape, arg))124    argAfterM = arg.flat[m:]125    print ("arg.flat[m:] =\n%s" % argAfterM)126    if argAfterM.size > 0:127        expectedRes = argAfterM.max()128        print ("expectedRes = %s" % str(expectedRes))129    else:130        expectedRes = numpy.iinfo(dtype).min131        print ("expectedRes = %s  (int32.min)" % str(expectedRes))132    res = getattr(pymod_test_mod, nim_test_proc_name)(arg, m)133    print ("res = %s" % str(res))134    assert res == expectedRes135@pytest.mark.parametrize("ndim", ndims_to_test)136@pytest.mark.parametrize("nim_test_proc_name", [137        "int32FindMaxWhileLoopRandaccIterExcludeLastM_1",138        "int32FindMaxWhileLoopRandaccIterExcludeLastM_2",139])140@pytest.mark.parametrize("m", [1, 2, 3, 4, 5, 10, 100, 1000])141def test_int32FindMaxWhileLoopRandaccIterExcludeLastM_1(pymod_test_mod, seeded_random_number_generator,142        ndim, nim_test_proc_name, m):143    dtype = numpy.int32144    arg = array_utils.get_random_Nd_array_of_ndim_and_type(ndim, dtype)145    print ("\nnim_test_proc_name = %s, m = %d" % (nim_test_proc_name, m))146    print ("random number seed = %d\nndim = %d, shape = %s\narg =\n%s" % \147            (seeded_random_number_generator, ndim, arg.shape, arg))148    argBeforeLastM = arg.flat[:-m]149    print ("arg.flat[:-m] =\n%s" % argBeforeLastM)150    if argBeforeLastM.size > 0:151        expectedRes = argBeforeLastM.max()152        print ("expectedRes = %s" % str(expectedRes))153    else:154        expectedRes = numpy.iinfo(dtype).min155        print ("expectedRes = %s  (int32.min)" % str(expectedRes))156    res = getattr(pymod_test_mod, nim_test_proc_name)(arg, m)157    print ("res = %s" % str(res))158    assert res == expectedRes159# for loop, Rand Acc Iter160@pytest.mark.parametrize("ndim", ndims_to_test)161@pytest.mark.parametrize("nim_test_proc_name", [162        "int32FindMaxForLoopRandaccIterDeref",163        "int32FindMaxForLoopRandaccIterDeref_m",164        "int32FindMaxForLoopRandaccIterDeref_i",165        "int32FindMaxForLoopRandaccIterIndex0_i",166])167def test_int32FindMaxForLoopRandaccIterDerefAlternatives(pymod_test_mod, seeded_random_number_generator,168        ndim, nim_test_proc_name):169    arg = array_utils.get_random_Nd_array_of_ndim_and_type(ndim, numpy.int32)170    print ("\nnim_test_proc_name = %s" % nim_test_proc_name)171    print ("random number seed = %d\nndim = %d, shape = %s\narg =\n%s" % \172            (seeded_random_number_generator, ndim, arg.shape, arg))173    expectedRes = arg.max()174    res = getattr(pymod_test_mod, nim_test_proc_name)(arg)175    print ("res = %s" % str(res))176    assert res == expectedRes177@pytest.mark.parametrize("ndim", ndims_to_test)178@pytest.mark.parametrize("nim_test_proc_name", [179        "int32FindMaxForLoopRandaccIterDeltaN",180        "int32FindMaxForLoopRandaccIterDeltaN_m",181        "int32FindMaxForLoopRandaccIterDeltaN_i",182])183@pytest.mark.parametrize("n", [1, 2, 3, 4, 5, 10, 100, 1000])184def test_int32FindMaxForLoopRandaccIterDeltaN_1(pymod_test_mod, seeded_random_number_generator,185        ndim, nim_test_proc_name, n):186    arg = array_utils.get_random_Nd_array_of_ndim_and_type(ndim, numpy.int32)187    print ("\nnim_test_proc_name = %s, n = %d" % (nim_test_proc_name, n))188    print ("random number seed = %d\nndim = %d, shape = %s\narg =\n%s" % \189            (seeded_random_number_generator, ndim, arg.shape, arg))190    argDeltaN = arg.flat[::n]191    print ("arg.flat[::n] =\n%s" % argDeltaN)192    expectedRes = argDeltaN.max()193    res = getattr(pymod_test_mod, nim_test_proc_name)(arg, n)194    print ("res = %s" % str(res))195    assert res == expectedRes196@pytest.mark.parametrize("ndim", ndims_to_test)197@pytest.mark.parametrize("nim_test_proc_name", [198        "int32FindMaxForLoopRandaccIterExcludeFirstM",199        "int32FindMaxForLoopRandaccIterExcludeFirstM_m",200        "int32FindMaxForLoopRandaccIterExcludeFirstM_i",201])202@pytest.mark.parametrize("m", [1, 2, 3, 4, 5, 10, 100, 1000])203def test_int32FindMaxForLoopRandaccIterExcludeFirstM_1(pymod_test_mod, seeded_random_number_generator,204        ndim, nim_test_proc_name, m):205    dtype = numpy.int32206    arg = array_utils.get_random_Nd_array_of_ndim_and_type(ndim, dtype)207    print ("\nnim_test_proc_name = %s, m = %d" % (nim_test_proc_name, m))208    print ("random number seed = %d\nndim = %d, shape = %s\narg =\n%s" % \209            (seeded_random_number_generator, ndim, arg.shape, arg))210    argAfterM = arg.flat[m:]211    print ("arg.flat[m:] =\n%s" % argAfterM)212    if argAfterM.size > 0:213        expectedRes = argAfterM.max()214        print ("expectedRes = %s" % str(expectedRes))215    else:216        expectedRes = numpy.iinfo(dtype).min217        print ("expectedRes = %s  (int32.min)" % str(expectedRes))218    res = getattr(pymod_test_mod, nim_test_proc_name)(arg, m)219    print ("res = %s" % str(res))220    assert res == expectedRes221@pytest.mark.parametrize("ndim", ndims_to_test)222@pytest.mark.parametrize("nim_test_proc_name", [223        "int32FindMaxForLoopRandaccIterExcludeLastM_i",224])225@pytest.mark.parametrize("m", [1, 2, 3, 4, 5, 10, 100, 1000])226def test_int32FindMaxForLoopRandaccIterExcludeLastM_1(pymod_test_mod, seeded_random_number_generator,227        ndim, nim_test_proc_name, m):228    dtype = numpy.int32229    arg = array_utils.get_random_Nd_array_of_ndim_and_type(ndim, dtype)230    print ("\nnim_test_proc_name = %s, m = %d" % (nim_test_proc_name, m))231    print ("random number seed = %d\nndim = %d, shape = %s\narg =\n%s" % \232            (seeded_random_number_generator, ndim, arg.shape, arg))233    argBeforeLastM = arg.flat[:-m]234    print ("arg.flat[:-m] =\n%s" % argBeforeLastM)235    if argBeforeLastM.size > 0:236        expectedRes = argBeforeLastM.max()237        print ("expectedRes = %s" % str(expectedRes))238    else:239        expectedRes = numpy.iinfo(dtype).min...test_conformer_separator.py
Source:test_conformer_separator.py  
2import torch3from torch import Tensor4from torch_complex.tensor import ComplexTensor5from espnet2.enh.separator.conformer_separator import ConformerSeparator6@pytest.mark.parametrize("input_dim", [15])7@pytest.mark.parametrize("num_spk", [1, 2])8@pytest.mark.parametrize("adim", [8])9@pytest.mark.parametrize("layers", [1, 3])10@pytest.mark.parametrize("aheads", [2])11@pytest.mark.parametrize("linear_units", [100])12@pytest.mark.parametrize("positionwise_layer_type", ["conv1d"])13@pytest.mark.parametrize("positionwise_conv_kernel_size", [3])14@pytest.mark.parametrize("normalize_before", [True])15@pytest.mark.parametrize("concat_after", [True])16@pytest.mark.parametrize("dropout_rate", [0.1])17@pytest.mark.parametrize("input_layer", ["linear", "conv2d"])18@pytest.mark.parametrize("positional_dropout_rate", [0.1])19@pytest.mark.parametrize("attention_dropout_rate", [0.1])20@pytest.mark.parametrize("nonlinear", ["relu", "sigmoid", "tanh"])21@pytest.mark.parametrize("conformer_pos_enc_layer_type", ["rel_pos"])22@pytest.mark.parametrize("conformer_self_attn_layer_type", ["rel_selfattn"])23@pytest.mark.parametrize("conformer_activation_type", ["relu", "tanh"])24@pytest.mark.parametrize("use_macaron_style_in_conformer", [True])25@pytest.mark.parametrize("use_cnn_in_conformer", [True])26@pytest.mark.parametrize("conformer_enc_kernel_size", [3, 5, 7])27@pytest.mark.parametrize("padding_idx", [-1])28def test_conformer_separator_forward_backward_complex(29    input_dim,30    num_spk,31    adim,32    aheads,33    layers,34    linear_units,35    positionwise_layer_type,36    positionwise_conv_kernel_size,37    normalize_before,38    concat_after,39    dropout_rate,40    input_layer,41    positional_dropout_rate,42    attention_dropout_rate,43    nonlinear,44    conformer_pos_enc_layer_type,45    conformer_self_attn_layer_type,46    conformer_activation_type,47    use_macaron_style_in_conformer,48    use_cnn_in_conformer,49    conformer_enc_kernel_size,50    padding_idx,51):52    model = ConformerSeparator(53        input_dim=input_dim,54        num_spk=num_spk,55        adim=adim,56        aheads=aheads,57        layers=layers,58        linear_units=linear_units,59        dropout_rate=dropout_rate,60        positional_dropout_rate=positional_dropout_rate,61        attention_dropout_rate=attention_dropout_rate,62        input_layer=input_layer,63        normalize_before=normalize_before,64        concat_after=concat_after,65        positionwise_layer_type=positionwise_layer_type,66        positionwise_conv_kernel_size=positionwise_conv_kernel_size,67        use_macaron_style_in_conformer=use_macaron_style_in_conformer,68        nonlinear=nonlinear,69        conformer_pos_enc_layer_type=conformer_pos_enc_layer_type,70        conformer_self_attn_layer_type=conformer_self_attn_layer_type,71        conformer_activation_type=conformer_activation_type,72        use_cnn_in_conformer=use_cnn_in_conformer,73        conformer_enc_kernel_size=conformer_enc_kernel_size,74        padding_idx=padding_idx,75    )76    model.train()77    real = torch.rand(2, 10, input_dim)78    imag = torch.rand(2, 10, input_dim)79    x = ComplexTensor(real, imag)80    x_lens = torch.tensor([10, 8], dtype=torch.long)81    masked, flens, others = model(x, ilens=x_lens)82    assert isinstance(masked[0], ComplexTensor)83    assert len(masked) == num_spk84    masked[0].abs().mean().backward()85@pytest.mark.parametrize("input_dim", [15])86@pytest.mark.parametrize("num_spk", [1, 2])87@pytest.mark.parametrize("adim", [8])88@pytest.mark.parametrize("layers", [1, 3])89@pytest.mark.parametrize("aheads", [2])90@pytest.mark.parametrize("linear_units", [100])91@pytest.mark.parametrize("positionwise_layer_type", ["conv1d"])92@pytest.mark.parametrize("positionwise_conv_kernel_size", [3])93@pytest.mark.parametrize("normalize_before", [True])94@pytest.mark.parametrize("concat_after", [True])95@pytest.mark.parametrize("dropout_rate", [0.1])96@pytest.mark.parametrize("input_layer", ["linear", "conv2d"])97@pytest.mark.parametrize("positional_dropout_rate", [0.1])98@pytest.mark.parametrize("attention_dropout_rate", [0.1])99@pytest.mark.parametrize("nonlinear", ["relu", "sigmoid", "tanh"])100@pytest.mark.parametrize("conformer_pos_enc_layer_type", ["rel_pos"])101@pytest.mark.parametrize("conformer_self_attn_layer_type", ["rel_selfattn"])102@pytest.mark.parametrize("conformer_activation_type", ["relu", "tanh"])103@pytest.mark.parametrize("use_macaron_style_in_conformer", [True])104@pytest.mark.parametrize("use_cnn_in_conformer", [True])105@pytest.mark.parametrize("conformer_enc_kernel_size", [3, 5, 7])106@pytest.mark.parametrize("padding_idx", [-1])107def test_conformer_separator_forward_backward_real(108    input_dim,109    num_spk,110    adim,111    aheads,112    layers,113    linear_units,114    positionwise_layer_type,115    positionwise_conv_kernel_size,116    normalize_before,117    concat_after,118    dropout_rate,119    input_layer,120    positional_dropout_rate,...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!!
