Merge pull request #1757 from tramwaj29/improved-message-when-not-using-parametrized-variable
Improved message when not using parametrized variable
This commit is contained in:
		
						commit
						a24146dd3c
					
				
							
								
								
									
										1
									
								
								AUTHORS
								
								
								
								
							
							
						
						
									
										1
									
								
								AUTHORS
								
								
								
								
							| 
						 | 
					@ -65,6 +65,7 @@ Javier Domingo Cansino
 | 
				
			||||||
John Towler
 | 
					John Towler
 | 
				
			||||||
Joshua Bronson
 | 
					Joshua Bronson
 | 
				
			||||||
Jurko Gospodnetić
 | 
					Jurko Gospodnetić
 | 
				
			||||||
 | 
					Justyna Janczyszyn
 | 
				
			||||||
Katarzyna Jachim
 | 
					Katarzyna Jachim
 | 
				
			||||||
Kale Kundert
 | 
					Kale Kundert
 | 
				
			||||||
Kevin Cox
 | 
					Kevin Cox
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -149,7 +149,6 @@ time or change existing behaviors in order to make them less surprising/more use
 | 
				
			||||||
* Allow passing a custom debugger class (e.g. ``--pdbcls=IPython.core.debugger:Pdb``).
 | 
					* Allow passing a custom debugger class (e.g. ``--pdbcls=IPython.core.debugger:Pdb``).
 | 
				
			||||||
  Thanks to `@anntzer`_ for the PR.
 | 
					  Thanks to `@anntzer`_ for the PR.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
*
 | 
					*
 | 
				
			||||||
 | 
					
 | 
				
			||||||
*
 | 
					*
 | 
				
			||||||
| 
						 | 
					@ -237,6 +236,9 @@ time or change existing behaviors in order to make them less surprising/more use
 | 
				
			||||||
 | 
					
 | 
				
			||||||
* ``optparse`` backward compatibility supports float/complex types (`#457`_).
 | 
					* ``optparse`` backward compatibility supports float/complex types (`#457`_).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Better message in case of not using parametrized variable (see `#1539`_).
 | 
				
			||||||
 | 
					  Thanks to `@tramwaj29`_ for the PR.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
*
 | 
					*
 | 
				
			||||||
 | 
					
 | 
				
			||||||
*
 | 
					*
 | 
				
			||||||
| 
						 | 
					@ -318,6 +320,7 @@ time or change existing behaviors in order to make them less surprising/more use
 | 
				
			||||||
.. _#1664: https://github.com/pytest-dev/pytest/pull/1664
 | 
					.. _#1664: https://github.com/pytest-dev/pytest/pull/1664
 | 
				
			||||||
.. _#1684: https://github.com/pytest-dev/pytest/pull/1684
 | 
					.. _#1684: https://github.com/pytest-dev/pytest/pull/1684
 | 
				
			||||||
.. _#1723: https://github.com/pytest-dev/pytest/pull/1723
 | 
					.. _#1723: https://github.com/pytest-dev/pytest/pull/1723
 | 
				
			||||||
 | 
					.. _#1539: https://github.com/pytest-dev/pytest/issues/1539
 | 
				
			||||||
.. _#1749: https://github.com/pytest-dev/pytest/issues/1749
 | 
					.. _#1749: https://github.com/pytest-dev/pytest/issues/1749
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.. _@DRMacIver: https://github.com/DRMacIver
 | 
					.. _@DRMacIver: https://github.com/DRMacIver
 | 
				
			||||||
| 
						 | 
					@ -351,6 +354,7 @@ time or change existing behaviors in order to make them less surprising/more use
 | 
				
			||||||
.. _@tareqalayan: https://github.com/tareqalayan
 | 
					.. _@tareqalayan: https://github.com/tareqalayan
 | 
				
			||||||
.. _@taschini: https://github.com/taschini
 | 
					.. _@taschini: https://github.com/taschini
 | 
				
			||||||
.. _@txomon: https://github.com/txomon
 | 
					.. _@txomon: https://github.com/txomon
 | 
				
			||||||
 | 
					.. _@tramwaj29: https://github.com/tramwaj29
 | 
				
			||||||
 | 
					
 | 
				
			||||||
2.9.2
 | 
					2.9.2
 | 
				
			||||||
=====
 | 
					=====
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -801,7 +801,13 @@ class Metafunc(fixtures.FuncargnamesCompatAttr):
 | 
				
			||||||
        valtypes = {}
 | 
					        valtypes = {}
 | 
				
			||||||
        for arg in argnames:
 | 
					        for arg in argnames:
 | 
				
			||||||
            if arg not in self.fixturenames:
 | 
					            if arg not in self.fixturenames:
 | 
				
			||||||
                raise ValueError("%r uses no fixture %r" %(self.function, arg))
 | 
					                if isinstance(indirect, (tuple, list)):
 | 
				
			||||||
 | 
					                    name = 'fixture' if arg in indirect else 'argument'
 | 
				
			||||||
 | 
					                else:
 | 
				
			||||||
 | 
					                    name = 'fixture' if indirect else 'argument'
 | 
				
			||||||
 | 
					                raise ValueError(
 | 
				
			||||||
 | 
					                    "%r uses no %s %r" % (
 | 
				
			||||||
 | 
					                            self.function, name, arg))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if indirect is True:
 | 
					        if indirect is True:
 | 
				
			||||||
            valtypes = dict.fromkeys(argnames, "params")
 | 
					            valtypes = dict.fromkeys(argnames, "params")
 | 
				
			||||||
| 
						 | 
					@ -811,7 +817,7 @@ class Metafunc(fixtures.FuncargnamesCompatAttr):
 | 
				
			||||||
            valtypes = dict.fromkeys(argnames, "funcargs")
 | 
					            valtypes = dict.fromkeys(argnames, "funcargs")
 | 
				
			||||||
            for arg in indirect:
 | 
					            for arg in indirect:
 | 
				
			||||||
                if arg not in argnames:
 | 
					                if arg not in argnames:
 | 
				
			||||||
                    raise ValueError("indirect given to %r: fixture %r doesn't exist" %(
 | 
					                    raise ValueError("indirect given to %r: fixture %r doesn't exist" % (
 | 
				
			||||||
                                     self.function, arg))
 | 
					                                     self.function, arg))
 | 
				
			||||||
                valtypes[arg] = "params"
 | 
					                valtypes[arg] = "params"
 | 
				
			||||||
        idfn = None
 | 
					        idfn = None
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -394,7 +394,7 @@ class TestMetafunc:
 | 
				
			||||||
        """)
 | 
					        """)
 | 
				
			||||||
        result = testdir.runpytest("--collect-only")
 | 
					        result = testdir.runpytest("--collect-only")
 | 
				
			||||||
        result.stdout.fnmatch_lines([
 | 
					        result.stdout.fnmatch_lines([
 | 
				
			||||||
            "*uses no fixture 'y'*",
 | 
					            "*uses no argument 'y'*",
 | 
				
			||||||
        ])
 | 
					        ])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @pytest.mark.issue714
 | 
					    @pytest.mark.issue714
 | 
				
			||||||
| 
						 | 
					@ -417,8 +417,42 @@ class TestMetafunc:
 | 
				
			||||||
            "*uses no fixture 'y'*",
 | 
					            "*uses no fixture 'y'*",
 | 
				
			||||||
        ])
 | 
					        ])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @pytest.mark.issue714
 | 
				
			||||||
 | 
					    def test_parametrize_indirect_uses_no_fixture_error_indirect_string(self, testdir):
 | 
				
			||||||
 | 
					        testdir.makepyfile("""
 | 
				
			||||||
 | 
					            import pytest
 | 
				
			||||||
 | 
					            @pytest.fixture(scope='function')
 | 
				
			||||||
 | 
					            def x(request):
 | 
				
			||||||
 | 
					                return request.param * 3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            @pytest.mark.parametrize('x, y', [('a', 'b')], indirect='y')
 | 
				
			||||||
 | 
					            def test_simple(x):
 | 
				
			||||||
 | 
					                assert len(x) == 3
 | 
				
			||||||
 | 
					        """)
 | 
				
			||||||
 | 
					        result = testdir.runpytest("--collect-only")
 | 
				
			||||||
 | 
					        result.stdout.fnmatch_lines([
 | 
				
			||||||
 | 
					            "*uses no fixture 'y'*",
 | 
				
			||||||
 | 
					        ])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @pytest.mark.issue714
 | 
					    @pytest.mark.issue714
 | 
				
			||||||
    def test_parametrize_indirect_uses_no_fixture_error_indirect_list(self, testdir):
 | 
					    def test_parametrize_indirect_uses_no_fixture_error_indirect_list(self, testdir):
 | 
				
			||||||
 | 
					        testdir.makepyfile("""
 | 
				
			||||||
 | 
					            import pytest
 | 
				
			||||||
 | 
					            @pytest.fixture(scope='function')
 | 
				
			||||||
 | 
					            def x(request):
 | 
				
			||||||
 | 
					                return request.param * 3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            @pytest.mark.parametrize('x, y', [('a', 'b')], indirect=['y'])
 | 
				
			||||||
 | 
					            def test_simple(x):
 | 
				
			||||||
 | 
					                assert len(x) == 3
 | 
				
			||||||
 | 
					        """)
 | 
				
			||||||
 | 
					        result = testdir.runpytest("--collect-only")
 | 
				
			||||||
 | 
					        result.stdout.fnmatch_lines([
 | 
				
			||||||
 | 
					            "*uses no fixture 'y'*",
 | 
				
			||||||
 | 
					        ])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @pytest.mark.issue714
 | 
				
			||||||
 | 
					    def test_parametrize_argument_not_in_indirect_list(self, testdir):
 | 
				
			||||||
        testdir.makepyfile("""
 | 
					        testdir.makepyfile("""
 | 
				
			||||||
            import pytest
 | 
					            import pytest
 | 
				
			||||||
            @pytest.fixture(scope='function')
 | 
					            @pytest.fixture(scope='function')
 | 
				
			||||||
| 
						 | 
					@ -431,7 +465,7 @@ class TestMetafunc:
 | 
				
			||||||
        """)
 | 
					        """)
 | 
				
			||||||
        result = testdir.runpytest("--collect-only")
 | 
					        result = testdir.runpytest("--collect-only")
 | 
				
			||||||
        result.stdout.fnmatch_lines([
 | 
					        result.stdout.fnmatch_lines([
 | 
				
			||||||
            "*uses no fixture 'y'*",
 | 
					            "*uses no argument 'y'*",
 | 
				
			||||||
        ])
 | 
					        ])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_addcalls_and_parametrize_indirect(self):
 | 
					    def test_addcalls_and_parametrize_indirect(self):
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue