diff --git a/doc/assert.txt b/doc/assert.txt index 5e7cb08ce..677801d9d 100644 --- a/doc/assert.txt +++ b/doc/assert.txt @@ -21,27 +21,27 @@ assertion fails you will see the value of ``x``:: $ py.test test_assert1.py =========================== test session starts ============================ - platform linux2 -- Python 2.6.5 -- pytest-2.0.0.dev22 + platform linux2 -- Python 2.6.5 -- pytest-2.0.0.dev30 test path 1: test_assert1.py - + test_assert1.py F - + ================================= FAILURES ================================= ______________________________ test_function _______________________________ - + def test_function(): > assert f() == 4 E assert 3 == 4 E + where 3 = f() - + test_assert1.py:5: AssertionError - ========================= 1 failed in 0.05 seconds ========================= + ========================= 1 failed in 0.03 seconds ========================= Reporting details about the failing assertion is achieved by re-evaluating the assert expression and recording intermediate values. Note: If evaluating the assert expression has side effects you may get a -warning that the intermediate values could not be determined safely. A +warning that the intermediate values could not be determined safely. A common example for this issue is reading from a file and comparing in one line:: @@ -57,14 +57,14 @@ assertions about expected exceptions ------------------------------------------ In order to write assertions about raised exceptions, you can use -``py.test.raises`` as a context manager like this:: +``pytest.raises`` as a context manager like this:: - with py.test.raises(ZeroDivisionError): + with pytest.raises(ZeroDivisionError): 1 / 0 and if you need to have access to the actual exception info you may use:: - with py.test.raises(RuntimeError) as excinfo: + with pytest.raises(RuntimeError) as excinfo: def f(): f() f() @@ -74,8 +74,8 @@ and if you need to have access to the actual exception info you may use:: If you want to write test code that works on Python2.4 as well, you may also use two other ways to test for an expected exception:: - py.test.raises(ExpectedException, func, *args, **kwargs) - py.test.raises(ExpectedException, "func(*args, **kwargs)") + pytest.raises(ExpectedException, func, *args, **kwargs) + pytest.raises(ExpectedException, "func(*args, **kwargs)") both of which execute the specified function with args and kwargs and asserts that the given ``ExpectedException`` is raised. The reporter will @@ -101,14 +101,14 @@ if you run this module:: $ py.test test_assert2.py =========================== test session starts ============================ - platform linux2 -- Python 2.6.5 -- pytest-2.0.0.dev22 + platform linux2 -- Python 2.6.5 -- pytest-2.0.0.dev30 test path 1: test_assert2.py - + test_assert2.py F - + ================================= FAILURES ================================= ___________________________ test_set_comparison ____________________________ - + def test_set_comparison(): set1 = set("1308") set2 = set("8035") @@ -118,7 +118,7 @@ if you run this module:: E '1' E Extra items in the right set: E '5' - + test_assert2.py:5: AssertionError ========================= 1 failed in 0.02 seconds ========================= @@ -128,7 +128,7 @@ Special comparisons are done for a number of cases: * comparing long sequences: first failing indices * comparing dicts: different entries -.. +.. Defining your own comparison ---------------------------------------------- diff --git a/doc/builtin.txt b/doc/builtin.txt index 2717bcfb1..63db8dd5c 100644 --- a/doc/builtin.txt +++ b/doc/builtin.txt @@ -1,8 +1,8 @@ -py.test builtin helpers +pytest builtin helpers ================================================ -builtin py.test.* helpers +builtin pytest.* helpers ----------------------------------------------------- You can always use an interactive Python prompt and type:: @@ -28,25 +28,25 @@ You can ask for available builtin or project-custom captures writes to sys.stdout/sys.stderr and makes them available successively via a ``capsys.readouterr()`` method which returns a ``(out, err)`` tuple of captured snapshot strings. - + capfd captures writes to file descriptors 1 and 2 and makes snapshotted ``(out, err)`` string tuples available via the ``capsys.readouterr()`` method. If the underlying platform does not have ``os.dup`` (e.g. Jython) tests using this funcarg will automatically skip. - + tmpdir return a temporary directory path object unique to each test function invocation, created as a sub directory of the base temporary directory. The returned object is a `py.path.local`_ path object. - + monkeypatch The returned ``monkeypatch`` funcarg provides these helper methods to modify objects, dictionaries or os.environ:: - + monkeypatch.setattr(obj, name, value, raising=True) monkeypatch.delattr(obj, name, raising=True) monkeypatch.setitem(mapping, name, value) @@ -54,15 +54,15 @@ You can ask for available builtin or project-custom monkeypatch.setenv(name, value, prepend=False) monkeypatch.delenv(name, value, raising=True) monkeypatch.syspath_prepend(path) - + All modifications will be undone when the requesting test function finished its execution. The ``raising`` parameter determines if a KeyError or AttributeError will be raised if the set/deletion operation has no target. - + recwarn Return a WarningsRecorder instance that provides these methods: - + * ``pop(category=None)``: return last warning matching the category. * ``clear()``: clear list of warnings - + diff --git a/doc/doctest.txt b/doc/doctest.txt index 90a0a7f02..97c463682 100644 --- a/doc/doctest.txt +++ b/doc/doctest.txt @@ -44,7 +44,7 @@ then you can just invoke ``py.test`` without command line options:: $ py.test =========================== test session starts ============================ - platform linux2 -- Python 2.6.5 -- pytest-2.0.0.dev22 - test path 1: /tmp/doc-exec-519 + platform linux2 -- Python 2.6.5 -- pytest-2.0.0.dev30 + test path 1: /tmp/doc-exec-66 ============================= in 0.00 seconds ============================= diff --git a/doc/example/controlskip.txt b/doc/example/controlskip.txt index cad3bb509..0f22a8890 100644 --- a/doc/example/controlskip.txt +++ b/doc/example/controlskip.txt @@ -8,22 +8,22 @@ Here is a ``conftest.py`` file adding a ``--runslow`` command line option to control skipping of ``slow`` marked tests:: # content of conftest.py - - import py + + import pytest def pytest_addoption(parser): parser.addoption("--runslow", action="store_true", help="run slow tests") def pytest_runtest_setup(item): if 'slow' in item.keywords and not item.config.getvalue("runslow"): - py.test.skip("need --runslow option to run") + pytest.skip("need --runslow option to run") We can now write a test module like this:: # content of test_module.py - - import py - slow = py.test.mark.slow + + import pytest + slow = pytest.mark.slow def test_func_fast(): pass @@ -34,14 +34,14 @@ We can now write a test module like this:: and when running it will see a skipped "slow" test:: - $ py.test test_module.py -rs # "-rs" means report on the little 's' + $ py.test test_module.py -rs # "-rs" means report details on the little 's' =========================== test session starts ============================ - platform linux2 -- Python 2.6.5 -- pytest-2.0.0.dev22 + platform linux2 -- Python 2.6.5 -- pytest-2.0.0.dev30 test path 1: test_module.py test_module.py .s ========================= short test summary info ========================== - SKIP [1] /tmp/doc-exec-557/conftest.py:9: need --runslow option to run + SKIP [1] /tmp/doc-exec-104/conftest.py:9: need --runslow option to run =================== 1 passed, 1 skipped in 0.02 seconds ==================== @@ -49,7 +49,7 @@ Or run it including the ``slow`` marked test:: $ py.test test_module.py --runslow =========================== test session starts ============================ - platform linux2 -- Python 2.6.5 -- pytest-2.0.0.dev22 + platform linux2 -- Python 2.6.5 -- pytest-2.0.0.dev30 test path 1: test_module.py test_module.py .. diff --git a/doc/example/mysetup.txt b/doc/example/mysetup.txt index d8fb1e24c..4ad2081ee 100644 --- a/doc/example/mysetup.txt +++ b/doc/example/mysetup.txt @@ -49,7 +49,7 @@ You can now run the test:: $ py.test test_sample.py =========================== test session starts ============================ - platform linux2 -- Python 2.6.5 -- pytest-2.0.0.dev22 + platform linux2 -- Python 2.6.5 -- pytest-2.0.0.dev30 test path 1: test_sample.py test_sample.py F @@ -57,7 +57,7 @@ You can now run the test:: ================================= FAILURES ================================= _______________________________ test_answer ________________________________ - mysetup = + mysetup = def test_answer(mysetup): app = mysetup.myapp() @@ -84,7 +84,7 @@ the previous example to add a command line option and to offer a new mysetup method:: # content of ./conftest.py - import py + import pytest from myapp import MyApp def pytest_funcarg__mysetup(request): # "mysetup" factory function @@ -105,7 +105,7 @@ and to offer a new mysetup method:: def getsshconnection(self): host = self.config.option.ssh if host is None: - py.test.skip("specify ssh host with --ssh") + pytest.skip("specify ssh host with --ssh") return execnet.SshGateway(host) @@ -122,14 +122,14 @@ Running it yields:: $ py.test test_ssh.py -rs =========================== test session starts ============================ - platform linux2 -- Python 2.6.5 -- pytest-2.0.0.dev22 + platform linux2 -- Python 2.6.5 -- pytest-2.0.0.dev30 test path 1: test_ssh.py test_ssh.py s ========================= short test summary info ========================== - SKIP [1] /tmp/doc-exec-560/conftest.py:22: specify ssh host with --ssh + SKIP [1] /tmp/doc-exec-107/conftest.py:22: specify ssh host with --ssh - ======================== 1 skipped in 0.03 seconds ========================= + ======================== 1 skipped in 0.02 seconds ========================= If you specify a command line option like ``py.test --ssh=python.org`` the test will execute as expected. diff --git a/doc/example/nonpython.txt b/doc/example/nonpython.txt index 52e172663..7d1857a77 100644 --- a/doc/example/nonpython.txt +++ b/doc/example/nonpython.txt @@ -27,7 +27,7 @@ now execute the test specification:: nonpython $ py.test test_simple.yml =========================== test session starts ============================ - platform linux2 -- Python 2.6.5 -- pytest-2.0.0.dev22 + platform linux2 -- Python 2.6.5 -- pytest-2.0.0.dev30 test path 1: test_simple.yml test_simple.yml .F @@ -39,7 +39,7 @@ now execute the test specification:: no further details known at this point. ========================= short test summary info ========================== FAIL test_simple.yml::hello - ==================== 1 failed, 1 passed in 0.43 seconds ==================== + ==================== 1 failed, 1 passed in 0.06 seconds ==================== You get one dot for the passing ``sub1: sub1`` check and one failure. Obviously in the above ``conftest.py`` you'll want to implement a more @@ -58,11 +58,11 @@ reporting in ``verbose`` mode:: nonpython $ py.test -v =========================== test session starts ============================ - platform linux2 -- Python 2.6.5 -- pytest-2.0.0.dev22 -- /home/hpk/venv/0/bin/python + platform linux2 -- Python 2.6.5 -- pytest-2.0.0.dev30 -- /home/hpk/venv/0/bin/python test path 1: /home/hpk/p/pytest/doc/example/nonpython - test_simple.yml <- test_simple.yml:1: usecase: ok PASSED - test_simple.yml <- test_simple.yml:1: usecase: hello FAILED + test_simple.yml:1: usecase: ok PASSED + test_simple.yml:1: usecase: hello FAILED ================================= FAILURES ================================= ______________________________ usecase: hello ______________________________ @@ -71,7 +71,7 @@ reporting in ``verbose`` mode:: no further details known at this point. ========================= short test summary info ========================== FAIL test_simple.yml::hello - ==================== 1 failed, 1 passed in 0.07 seconds ==================== + ==================== 1 failed, 1 passed in 0.06 seconds ==================== While developing your custom test collection and execution it's also interesting to just look at the collection tree:: diff --git a/doc/faq.txt b/doc/faq.txt index 80aba92dc..6cae8a844 100644 --- a/doc/faq.txt +++ b/doc/faq.txt @@ -65,9 +65,9 @@ Is using funcarg- versus xUnit setup a style question? +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ For simple applications and for people experienced with nose_ or -unittest-style test setup using `xUnit style setup`_ +unittest-style test setup using `xUnit style setup`_ often feels natural. For larger test suites, parametrized testing -or setup of complex test resources using funcargs_ is recommended. +or setup of complex test resources using funcargs_ may feel more natural. Moreover, funcargs are ideal for writing advanced test support code (like e.g. the monkeypatch_, the tmpdir_ or capture_ funcargs) because the support code can register setup/teardown functions @@ -82,18 +82,17 @@ in a managed class/module/function scope. Why the ``pytest_funcarg__*`` name for funcarg factories? ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -When experimenting with funcargs an explicit registration mechanism -was considered. But lacking a good use case for this indirection and -flexibility we decided to go for `Convention over Configuration`_ and -allow to directly specify the factory. Besides removing the need -for an indirection it allows to "grep" for ``pytest_funcarg__MYARG`` -and will safely find all factory functions for the ``MYARG`` function -argument. It helps to alleviate the de-coupling of function -argument usage and creation. +We alternatively implemented an explicit registration mechanism for +function argument factories. But lacking a good use case for this +indirection and flexibility we decided to go for `Convention over +Configuration`_ and rather have factories specified by convention. +Besides removing the need for an registration indirection it allows to +"grep" for ``pytest_funcarg__MYARG`` and will safely find all factory +functions for the ``MYARG`` function argument. .. _`Convention over Configuration`: http://en.wikipedia.org/wiki/Convention_over_Configuration -Can I yield multiple values from a factory function? +Can I yield multiple values from a funcarg factory function? ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ There are two conceptual reasons why yielding from a factory function @@ -126,24 +125,16 @@ by pickling and thus implicitely re-import a lot of local modules. Unfortuantely, setuptools-0.6.11 does not ``if __name__=='__main__'`` protect its generated command line script. This leads to infinite recursion when running a test that instantiates Processes. -There are these workarounds: -* `install Distribute`_ as a drop-in replacement for setuptools - and install py.test - -* `directly use a checkout`_ which avoids all setuptools/Distribute - installation - -If those options are not available to you, you may also manually +A good solution is to `install Distribute`_ as a drop-in replacement +for setuptools and then re-install ``pytest``. Otherwise you could fix the script that is created by setuptools by inserting an ``if __name__ == '__main__'``. Or you can create a "pytest.py" script with this content and invoke that with the python version:: - import py + import pytest if __name__ == '__main__': - py.cmdline.pytest() - -.. _`directly use a checkout`: install.html#directly-use-a-checkout + pytest.main() .. _`install distribute`: http://pypi.python.org/pypi/distribute#installation-instructions diff --git a/doc/features.txt b/doc/features.txt index b3cb48e1b..518022a33 100644 --- a/doc/features.txt +++ b/doc/features.txt @@ -15,11 +15,11 @@ no-boilerplate testing with Python extensive plugin and customization system ------------------------------------------------------ -.. _`suprisingly easy`: http://bruynooghe.blogspot.com/2009/12/skipping-slow-test-by-default-in-pytest.html +.. _`easy`: http://bruynooghe.blogspot.com/2009/12/skipping-slow-test-by-default-in-pytest.html - all collection, reporting, running aspects are delegated to hook functions -- hook functions are defined per-directory, per-project or through PyPI released plugins -- it is `suprisingly easy`_ to add command line options or +- hook functions are implemented per-directory, per-project or through PyPI released plugins +- it is `easy`_ to add command line options or do other kind of add-ons and customizations. mature command line testing tool @@ -42,24 +42,20 @@ integrates well with CI systems .. _`tox`: http://codespeak.net/tox -supports several testing practises and methods +supports common testing practises and methods ----------------------------------------------------------- - supports extended `xUnit style setup`_ -- can integrate nose_, `unittest.py` and `doctest.py`_ style tests +- can integrate ``nose``, ``unittest.py`` and ``doctest.py`` style tests - supports generating testing coverage reports - supports :ref:`non-python tests` - `Javasript unit- and functional testing`_ -.. _`Javasript unit- and functional testing`: plugin/oejskit.html -.. _`coverage testing with figleaf`: plugin/figleaf.html -.. _`unittest.py`: http://docs.python.org/library/unittest.html +.. _`Javasript unit- and functional testing`: http://pypi.python.org/pypi/oejskit distributing tests to local/remote subprocesses -------------------------------------------------------- -.. _`pytest-xdist`: plugin/xdist.html - - distribute tests to multiple CPUs - distribute tests to remote ssh or socket connected machines - run tests in subprocess, re-run failing ones on file-change diff --git a/doc/funcargs.txt b/doc/funcargs.txt index fabe66114..2ba932c24 100644 --- a/doc/funcargs.txt +++ b/doc/funcargs.txt @@ -34,7 +34,7 @@ Running the test looks like this:: $ py.test test_simplefactory.py =========================== test session starts ============================ - platform linux2 -- Python 2.6.5 -- pytest-2.0.0.dev22 + platform linux2 -- Python 2.6.5 -- pytest-2.0.0.dev30 test path 1: test_simplefactory.py test_simplefactory.py F @@ -136,7 +136,7 @@ Running this:: $ py.test test_example.py =========================== test session starts ============================ - platform linux2 -- Python 2.6.5 -- pytest-2.0.0.dev22 + platform linux2 -- Python 2.6.5 -- pytest-2.0.0.dev30 test path 1: test_example.py test_example.py .........F @@ -151,7 +151,7 @@ Running this:: E assert 9 < 9 test_example.py:7: AssertionError - ==================== 1 failed, 9 passed in 0.04 seconds ==================== + ==================== 1 failed, 9 passed in 0.03 seconds ==================== Note that the ``pytest_generate_tests(metafunc)`` hook is called during the test collection phase which is separate from the actual test running. @@ -174,10 +174,10 @@ If you want to select only the run with the value ``7`` you could do:: $ py.test -v -k 7 test_example.py # or -k test_func[7] =========================== test session starts ============================ - platform linux2 -- Python 2.6.5 -- pytest-2.0.0.dev22 -- /home/hpk/venv/0/bin/python + platform linux2 -- Python 2.6.5 -- pytest-2.0.0.dev30 -- /home/hpk/venv/0/bin/python test path 1: test_example.py - test_example.py <- test_example.py:6: test_func[7] PASSED + test_example.py:6: test_func[7] PASSED ======================== 9 tests deselected by '7' ========================= ================== 1 passed, 9 deselected in 0.01 seconds ================== diff --git a/doc/getting-started.txt b/doc/getting-started.txt index 637dadc50..d8302dbfe 100644 --- a/doc/getting-started.txt +++ b/doc/getting-started.txt @@ -14,7 +14,7 @@ Installation options:: To check your installation has installed the correct version:: $ py.test --version - This is py.test version 2.0.0.dev22, imported from /home/hpk/p/pytest/pytest + This is py.test version 2.0.0.dev30, imported from /home/hpk/p/pytest/pytest.py If you get an error checkout :ref:`installation issues`. @@ -34,8 +34,8 @@ That's it. You can execute the test function now:: $ py.test =========================== test session starts ============================ - platform linux2 -- Python 2.6.5 -- pytest-2.0.0.dev22 - test path 1: /tmp/doc-exec-523 + platform linux2 -- Python 2.6.5 -- pytest-2.0.0.dev30 + test path 1: /tmp/doc-exec-70 test_sample.py F @@ -79,19 +79,19 @@ If you want to assert some code raises an exception you can use the ``raises`` helper:: # content of test_sysexit.py - import py + import pytest def f(): raise SystemExit(1) def test_mytest(): - with py.test.raises(SystemExit): + with pytest.raises(SystemExit): f() Running it with, this time in "quiet" reporting mode:: $ py.test -q test_sysexit.py . - 1 passed in 0.01 seconds + 1 passed in 0.00 seconds .. todo:: For further ways to assert exceptions see the `raises` @@ -121,7 +121,7 @@ run the module by passing its filename:: ================================= FAILURES ================================= ____________________________ TestClass.test_two ____________________________ - self = + self = def test_two(self): x = "hello" @@ -129,7 +129,7 @@ run the module by passing its filename:: E assert hasattr('hello', 'check') test_class.py:8: AssertionError - 1 failed, 1 passed in 0.03 seconds + 1 failed, 1 passed in 0.02 seconds The first test passed, the second failed. Again we can easily see the intermediate values used in the assertion, helping us to @@ -149,7 +149,7 @@ arbitrary resources, for example a unique temporary directory:: assert 0 We list the name ``tmpdir`` in the test function signature and -py.test will lookup and call a factory to create the resource +py.test will lookup and call a factory to create the resource before performing the test function call. Let's just run it:: $ py.test -q test_tmpdir.py @@ -157,7 +157,7 @@ before performing the test function call. Let's just run it:: ================================= FAILURES ================================= _____________________________ test_needsfiles ______________________________ - tmpdir = local('/tmp/pytest-446/test_needsfiles0') + tmpdir = local('/tmp/pytest-122/test_needsfiles0') def test_needsfiles(tmpdir): print tmpdir @@ -166,8 +166,8 @@ before performing the test function call. Let's just run it:: test_tmpdir.py:3: AssertionError ----------------------------- Captured stdout ------------------------------ - /tmp/pytest-446/test_needsfiles0 - 1 failed in 0.07 seconds + /tmp/pytest-122/test_needsfiles0 + 1 failed in 0.05 seconds Before the test runs, a unique-per-test-invocation temporary directory was created. More info at :ref:`tmpdir handling`. diff --git a/doc/mark.txt b/doc/mark.txt index a4809f97e..c8585b20d 100644 --- a/doc/mark.txt +++ b/doc/mark.txt @@ -6,7 +6,7 @@ mark test functions with attributes .. currentmodule:: _pytest.mark -By using the ``py.test.mark`` helper you can instantiate +By using the ``pytest.mark`` helper you can instantiate decorators that will set named meta data on test functions. Marking a single function @@ -14,22 +14,22 @@ Marking a single function You can "mark" a test function with meta data like this:: - import py - @py.test.mark.webtest + import pytest + @pytest.mark.webtest def test_send_http(): ... -This will set the function attribute ``webtest`` to a :py:class:`MarkInfo` +This will set the function attribute ``webtest`` to a :py:class:`MarkInfo` instance. You can also specify parametrized meta data like this:: # content of test_mark.py - import py - @py.test.mark.webtest(firefox=30) + import pytest + @pytest.mark.webtest(firefox=30) def test_receive(): pass - @py.test.mark.webtest("functional", firefox=30) + @pytest.mark.webtest("functional", firefox=30) def test_run_and_look(): pass @@ -43,12 +43,12 @@ and access it from other places like this:: Marking whole classes or modules ---------------------------------------------------- -If you are programming with Python2.6 you may use ``py.test.mark`` decorators +If you are programming with Python2.6 you may use ``pytest.mark`` decorators with classes to apply markers to all its test methods:: # content of test_mark_classlevel.py - import py - @py.test.mark.webtest + import pytest + @pytest.mark.webtest class TestClass: def test_startup(self): pass @@ -61,22 +61,22 @@ two test functions. To remain compatible with Python2.5 you can also set a ``pytestmark`` attribute on a TestClass like this:: - import py + import pytest class TestClass: - pytestmark = py.test.mark.webtest + pytestmark = pytest.mark.webtest or if you need to use multiple markers you can use a list:: - import py + import pytest class TestClass: - pytestmark = [py.test.mark.webtest, pytest.mark.slowtest] + pytestmark = [pytest.mark.webtest, pytest.mark.slowtest] You can also set a module level marker:: - import py - pytestmark = py.test.mark.webtest + import pytest + pytestmark = pytest.mark.webtest in which case it will be applied to all functions and methods defined in the module. @@ -88,20 +88,20 @@ You can use the ``-k`` command line option to select tests:: $ py.test -k webtest # running with the above defined examples yields =========================== test session starts ============================ - platform linux2 -- Python 2.6.5 -- pytest-2.0.0.dev22 - test path 1: /tmp/doc-exec-527 + platform linux2 -- Python 2.6.5 -- pytest-2.0.0.dev30 + test path 1: /tmp/doc-exec-74 test_mark.py .. test_mark_classlevel.py .. - ========================= 4 passed in 0.02 seconds ========================= + ========================= 4 passed in 0.01 seconds ========================= And you can also run all tests except the ones that match the keyword:: $ py.test -k-webtest =========================== test session starts ============================ - platform linux2 -- Python 2.6.5 -- pytest-2.0.0.dev22 - test path 1: /tmp/doc-exec-527 + platform linux2 -- Python 2.6.5 -- pytest-2.0.0.dev30 + test path 1: /tmp/doc-exec-74 ===================== 4 tests deselected by '-webtest' ===================== ======================= 4 deselected in 0.01 seconds ======================= @@ -110,8 +110,8 @@ Or to only select the class:: $ py.test -kTestClass =========================== test session starts ============================ - platform linux2 -- Python 2.6.5 -- pytest-2.0.0.dev22 - test path 1: /tmp/doc-exec-527 + platform linux2 -- Python 2.6.5 -- pytest-2.0.0.dev30 + test path 1: /tmp/doc-exec-74 test_mark_classlevel.py .. diff --git a/doc/monkeypatch.txt b/doc/monkeypatch.txt index 83ed3c510..5e33a9961 100644 --- a/doc/monkeypatch.txt +++ b/doc/monkeypatch.txt @@ -39,8 +39,8 @@ will be undone. .. background check: $ py.test =========================== test session starts ============================ - platform linux2 -- Python 2.6.5 -- pytest-2.0.0.dev22 - test path 1: /tmp/doc-exec-528 + platform linux2 -- Python 2.6.5 -- pytest-2.0.0.dev30 + test path 1: /tmp/doc-exec-75 ============================= in 0.00 seconds ============================= diff --git a/doc/recwarn.txt b/doc/recwarn.txt index 94431db32..b90dc8607 100644 --- a/doc/recwarn.txt +++ b/doc/recwarn.txt @@ -31,8 +31,8 @@ You can also call a global helper for checking that a certain function call triggers a Deprecation warning:: - import py + import pytest def test_global(): - py.test.deprecated_call(myfunction, 17) + pytest.deprecated_call(myfunction, 17) diff --git a/doc/skipping.txt b/doc/skipping.txt index 324fea6df..fb7b254d7 100644 --- a/doc/skipping.txt +++ b/doc/skipping.txt @@ -12,7 +12,7 @@ requirement without which considering or running the test does not make sense. If a test fails under all conditions then it's probably best to mark your test as 'xfail'. -By running ``py.test -rxs`` you will see extra reporting +By running ``py.test -rxs`` you will see extra reporting information on skips and xfail-run tests at the end of a test run. .. _skipif: @@ -23,7 +23,7 @@ Skipping a single function Here is an example for marking a test function to be skipped when run on a Python3 interpreter:: - @py.test.mark.skipif("sys.version_info >= (3,0)") + @pytest.mark.skipif("sys.version_info >= (3,0)") def test_function(): ... @@ -33,14 +33,14 @@ contains the ``sys`` and ``os`` modules and the test ``config`` object. The latter allows you to skip based on a test configuration value e.g. like this:: - @py.test.mark.skipif("not config.getvalue('db')") + @pytest.mark.skipif("not config.getvalue('db')") def test_function(...): ... Create a shortcut for your conditional skip decorator at module level like this:: - win32only = py.test.mark.skipif("sys.platform != 'win32'") + win32only = pytest.mark.skipif("sys.platform != 'win32'") @win32only def test_function(): @@ -55,7 +55,7 @@ As with all function :ref:`marking` you can do it at for skipping all methods of a test class based on platform:: class TestPosixCalls: - pytestmark = py.test.mark.skipif("sys.platform == 'win32'") + pytestmark = pytest.mark.skipif("sys.platform == 'win32'") def test_function(self): # will not be setup or run under 'win32' platform @@ -65,7 +65,7 @@ The ``pytestmark`` decorator will be applied to each test function. If your code targets python2.6 or above you can equivalently use the skipif decorator on classes:: - @py.test.mark.skipif("sys.platform == 'win32'") + @pytest.mark.skipif("sys.platform == 'win32'") class TestPosixCalls: def test_function(self): @@ -86,7 +86,7 @@ mark a test function as expected to fail You can use the ``xfail`` marker to indicate that you expect the test to fail:: - @py.test.mark.xfail + @pytest.mark.xfail def test_function(): ... @@ -97,21 +97,21 @@ when it fails. Instead terminal reporting will list it in the Same as with skipif_ you can also selectively expect a failure depending on platform:: - @py.test.mark.xfail("sys.version_info >= (3,0)") + @pytest.mark.xfail("sys.version_info >= (3,0)") def test_function(): ... To not run a test and still regard it as "xfailed":: - @py.test.mark.xfail(..., run=False) + @pytest.mark.xfail(..., run=False) To specify an explicit reason to be shown with xfailure detail:: - @py.test.mark.xfail(..., reason="my reason") + @pytest.mark.xfail(..., reason="my reason") By specifying on the commandline:: - py.test --runxfail + pytest --runxfail you can force the running and reporting of a runnable ``xfail`` marked test. @@ -124,7 +124,7 @@ within test or setup code. Example:: def test_function(): if not valid_config(): - py.test.xfail("unsuppored configuration") + pytest.xfail("unsuppored configuration") skipping on a missing import dependency @@ -133,13 +133,13 @@ skipping on a missing import dependency You can use the following import helper at module level or within a test or test setup function:: - docutils = py.test.importorskip("docutils") + docutils = pytest.importorskip("docutils") If ``docutils`` cannot be imported here, this will lead to a skip outcome of the test. You can also skip dependeing if if a library does not come with a high enough version:: - docutils = py.test.importorskip("docutils", minversion="0.3") + docutils = pytest.importorskip("docutils", minversion="0.3") The version will be read from the specified module's ``__version__`` attribute. @@ -152,5 +152,5 @@ within test or setup code. Example:: def test_function(): if not valid_config(): - py.test.skip("unsuppored configuration") + pytest.skip("unsuppored configuration") diff --git a/doc/tmpdir.txt b/doc/tmpdir.txt index 7ba6c82c9..f515337ed 100644 --- a/doc/tmpdir.txt +++ b/doc/tmpdir.txt @@ -28,7 +28,7 @@ Running this would result in a passed test except for the last $ py.test test_tmpdir.py =========================== test session starts ============================ - platform linux2 -- Python 2.6.5 -- pytest-2.0.0.dev22 + platform linux2 -- Python 2.6.5 -- pytest-2.0.0.dev30 test path 1: test_tmpdir.py test_tmpdir.py F @@ -36,7 +36,7 @@ Running this would result in a passed test except for the last ================================= FAILURES ================================= _____________________________ test_create_file _____________________________ - tmpdir = local('/tmp/pytest-447/test_create_file0') + tmpdir = local('/tmp/pytest-123/test_create_file0') def test_create_file(tmpdir): p = tmpdir.mkdir("sub").join("hello.txt") @@ -47,7 +47,7 @@ Running this would result in a passed test except for the last E assert 0 test_tmpdir.py:7: AssertionError - ========================= 1 failed in 0.15 seconds ========================= + ========================= 1 failed in 0.02 seconds ========================= .. _`base temporary directory`: diff --git a/doc/unittest.txt b/doc/unittest.txt index 0ee81c832..4d384441d 100644 --- a/doc/unittest.txt +++ b/doc/unittest.txt @@ -24,7 +24,7 @@ Running it yields:: $ py.test test_unittest.py =========================== test session starts ============================ - platform linux2 -- Python 2.6.5 -- pytest-2.0.0.dev22 + platform linux2 -- Python 2.6.5 -- pytest-2.0.0.dev30 test path 1: test_unittest.py test_unittest.py F @@ -56,7 +56,7 @@ Running it yields:: /usr/lib/python2.6/unittest.py:350: AssertionError ----------------------------- Captured stdout ------------------------------ hello - ========================= 1 failed in 0.12 seconds ========================= + ========================= 1 failed in 0.02 seconds ========================= .. _`unittest.py style`: http://docs.python.org/library/unittest.html diff --git a/doc/usage.txt b/doc/usage.txt index 446c1c51f..f07f48e92 100644 --- a/doc/usage.txt +++ b/doc/usage.txt @@ -10,7 +10,7 @@ Usage and Invocations calling pytest through ``python -m pytest`` ----------------------------------------------------- -.. versionadded: 2.0 +.. versionadded:: 2.0 If you use Python-2.5 or above you can invoke testing through the Python interpreter from the command line:: @@ -88,9 +88,10 @@ Setting a breakpoint / aka ``set_trace()`` If you want to set a breakpoint and enter the ``pdb.set_trace()`` you can use a helper:: + import pytest def test_function(): ... - py.test.set_trace() # invoke PDB debugger and tracing + pytest.set_trace() # invoke PDB debugger and tracing .. versionadded: 2.0.0 @@ -140,7 +141,7 @@ Currently only pasting to the http://paste.pocoo.org service is implemented. calling pytest from Python code ---------------------------------------------------- -.. versionadded: 2.0 +.. versionadded:: 2.0 You can invoke ``py.test`` from Python code directly:: diff --git a/testing/acceptance_test.py b/testing/acceptance_test.py index 4bf08c5d2..352c0ec99 100644 --- a/testing/acceptance_test.py +++ b/testing/acceptance_test.py @@ -130,7 +130,7 @@ class TestGeneralUsage: assert result.ret != 0 assert "should be seen" in result.stdout.str() - @py.test.mark.skipif("not hasattr(os, 'symlink')") + @pytest.mark.skipif("not hasattr(os, 'symlink')") def test_chdir(self, testdir): testdir.tmpdir.join("py").mksymlinkto(py._pydir) p = testdir.tmpdir.join("main.py") @@ -273,7 +273,7 @@ class TestInvocationVariants: def test_double_pytestcmdline(self, testdir): p = testdir.makepyfile(run=""" - import py, pytest + import pytest pytest.main() pytest.main() """) @@ -287,19 +287,19 @@ class TestInvocationVariants: "*1 passed*", ]) - @py.test.mark.skipif("sys.version_info < (2,5)") + @pytest.mark.skipif("sys.version_info < (2,5)") def test_python_minus_m_invocation_ok(self, testdir): p1 = testdir.makepyfile("def test_hello(): pass") res = testdir.run(py.std.sys.executable, "-m", "py.test", str(p1)) assert res.ret == 0 - @py.test.mark.skipif("sys.version_info < (2,5)") + @pytest.mark.skipif("sys.version_info < (2,5)") def test_python_minus_m_invocation_fail(self, testdir): p1 = testdir.makepyfile("def test_fail(): 0/0") res = testdir.run(py.std.sys.executable, "-m", "py.test", str(p1)) assert res.ret == 1 - @py.test.mark.skipif("sys.version_info < (2,5)") + @pytest.mark.skipif("sys.version_info < (2,5)") def test_python_pytest_package(self, testdir): p1 = testdir.makepyfile("def test_pass(): pass") res = testdir.run(py.std.sys.executable, "-m", "pytest", str(p1)) @@ -359,7 +359,7 @@ class TestInvocationVariants: ]) - @py.test.mark.xfail(reason="decide: feature or bug") + @pytest.mark.xfail(reason="decide: feature or bug") def test_noclass_discovery_if_not_testcase(self, testdir): testpath = testdir.makepyfile(""" import unittest diff --git a/testing/conftest.py b/testing/conftest.py index d10d8edd6..db3f627b5 100644 --- a/testing/conftest.py +++ b/testing/conftest.py @@ -1,4 +1,4 @@ -import py +import pytest import sys pytest_plugins = "pytester", @@ -91,5 +91,5 @@ def pytest_funcarg__anypython(request): executable = py.path.local(executable) if executable.check(): return executable - py.test.skip("no %s found" % (name,)) + pytest.skip("no %s found" % (name,)) return executable diff --git a/testing/test_assertion.py b/testing/test_assertion.py index b1daffb75..e153f6546 100644 --- a/testing/test_assertion.py +++ b/testing/test_assertion.py @@ -1,9 +1,9 @@ import sys -import py +import py, pytest import _pytest.assertion as plugin -needsnewassert = py.test.mark.skipif("sys.version_info < (2,6)") +needsnewassert = pytest.mark.skipif("sys.version_info < (2,6)") def interpret(expr): return py.code._reinterpret(expr, py.code.Frame(sys._getframe(1))) diff --git a/testing/test_capture.py b/testing/test_capture.py index 89c757695..0ea2df6b5 100644 --- a/testing/test_capture.py +++ b/testing/test_capture.py @@ -1,7 +1,7 @@ -import py, os, sys +import pytest, py, os, sys from _pytest.capture import CaptureManager -needsosdup = py.test.mark.xfail("not hasattr(os, 'dup')") +needsosdup = pytest.mark.xfail("not hasattr(os, 'dup')") class TestCaptureManager: def test_getmethod_default_no_fd(self, testdir, monkeypatch): @@ -33,7 +33,7 @@ class TestCaptureManager: assert capman._getmethod(config, sub.join("test_hello.py")) == name @needsosdup - @py.test.mark.multi(method=['no', 'fd', 'sys']) + @pytest.mark.multi(method=['no', 'fd', 'sys']) def test_capturing_basic_api(self, method): capouter = py.io.StdCaptureFD() old = sys.stdout, sys.stderr, sys.stdin @@ -63,8 +63,8 @@ class TestCaptureManager: config = testdir.parseconfig(testdir.tmpdir) capman = CaptureManager() capman.resumecapture("fd") - py.test.raises(ValueError, 'capman.resumecapture("fd")') - py.test.raises(ValueError, 'capman.resumecapture("sys")') + pytest.raises(ValueError, 'capman.resumecapture("fd")') + pytest.raises(ValueError, 'capman.resumecapture("sys")') os.write(1, "hello\n".encode('ascii')) out, err = capman.suspendcapture() assert out == "hello\n" @@ -77,7 +77,7 @@ class TestCaptureManager: finally: capouter.reset() -@py.test.mark.multi(method=['fd', 'sys']) +@pytest.mark.multi(method=['fd', 'sys']) def test_capturing_unicode(testdir, method): if sys.version_info >= (3,0): obj = "'b\u00f6y'" @@ -96,7 +96,7 @@ def test_capturing_unicode(testdir, method): "*1 passed*" ]) -@py.test.mark.multi(method=['fd', 'sys']) +@pytest.mark.multi(method=['fd', 'sys']) def test_capturing_bytes_in_utf8_encoding(testdir, method): testdir.makepyfile(""" def test_unicode(): @@ -141,7 +141,7 @@ class TestPerTestCapturing: "in func2*", ]) - @py.test.mark.xfail + @pytest.mark.xfail def test_capture_scope_cache(self, testdir): p = testdir.makepyfile(""" import sys @@ -245,7 +245,7 @@ class TestLoggingInteraction: p = testdir.makepyfile(""" def test_logging(): import logging - import py + import pytest stream = py.io.TextIO() logging.basicConfig(stream=stream) stream.close() # to free memory/release resources diff --git a/testing/test_collection.py b/testing/test_collection.py index e26925bef..425edd887 100644 --- a/testing/test_collection.py +++ b/testing/test_collection.py @@ -178,7 +178,7 @@ class TestPrunetraceback: "*hello world*", ]) - @py.test.mark.xfail(reason="other mechanism for adding to reporting needed") + @pytest.mark.xfail(reason="other mechanism for adding to reporting needed") def test_collect_report_postprocessing(self, testdir): p = testdir.makepyfile(""" import not_exists @@ -520,7 +520,7 @@ class Test_genitems: # do we want to unify behaviour with # test_subdir_conftest_error? p = testdir.makepyfile(conftest="raise SyntaxError\n") - py.test.raises(SyntaxError, testdir.inline_genitems, p.dirpath()) + pytest.raises(SyntaxError, testdir.inline_genitems, p.dirpath()) def test_example_items1(self, testdir): p = testdir.makepyfile(''' diff --git a/testing/test_config.py b/testing/test_config.py index 2fd509af6..cc65e752a 100644 --- a/testing/test_config.py +++ b/testing/test_config.py @@ -1,4 +1,4 @@ -import py +import py, pytest from _pytest.config import getcfg, Config @@ -40,7 +40,7 @@ class TestParseIni: "*tox.ini:2*requires*9.0*actual*" ]) - @py.test.mark.multi(name="setup.cfg tox.ini pytest.ini".split()) + @pytest.mark.multi(name="setup.cfg tox.ini pytest.ini".split()) def test_ini_names(self, testdir, name): testdir.tmpdir.join(name).write(py.std.textwrap.dedent(""" [pytest] @@ -64,7 +64,7 @@ class TestParseIni: config.parse([sub]) assert config.getini("minversion") == "2.0" - @py.test.mark.xfail(reason="probably not needed") + @pytest.mark.xfail(reason="probably not needed") def test_confcutdir(self, testdir): sub = testdir.mkdir("sub") sub.chdir() @@ -78,7 +78,7 @@ class TestParseIni: class TestConfigCmdlineParsing: def test_parsing_again_fails(self, testdir): config = testdir.reparseconfig([testdir.tmpdir]) - py.test.raises(AssertionError, "config.parse([])") + pytest.raises(AssertionError, "config.parse([])") class TestConfigTmpdir: @@ -125,21 +125,21 @@ class TestConfigAPI: o = testdir.tmpdir assert config.getvalue("x") == 1 assert config.getvalue("x", o.join('sub')) == 2 - py.test.raises(KeyError, "config.getvalue('y')") + pytest.raises(KeyError, "config.getvalue('y')") config = testdir.reparseconfig([str(o.join('sub'))]) assert config.getvalue("x") == 2 assert config.getvalue("y") == 3 assert config.getvalue("x", o) == 1 - py.test.raises(KeyError, 'config.getvalue("y", o)') + pytest.raises(KeyError, 'config.getvalue("y", o)') def test_config_getvalueorskip(self, testdir): config = testdir.parseconfig() - py.test.raises(py.test.skip.Exception, + pytest.raises(pytest.skip.Exception, "config.getvalueorskip('hello')") verbose = config.getvalueorskip("verbose") assert verbose == config.option.verbose config.option.hello = None - py.test.raises(py.test.skip.Exception, + pytest.raises(pytest.skip.Exception, "config.getvalueorskip('hello')") def test_config_overwrite(self, testdir): @@ -176,7 +176,7 @@ class TestConfigAPI: config = testdir.parseconfig() val = config.getini("myname") assert val == "hello" - py.test.raises(ValueError, config.getini, 'other') + pytest.raises(ValueError, config.getini, 'other') def test_addini_pathlist(self, testdir): testdir.makeconftest(""" @@ -193,7 +193,7 @@ class TestConfigAPI: assert len(l) == 2 assert l[0] == p.dirpath('hello') assert l[1] == p.dirpath('world/sub.py') - py.test.raises(ValueError, config.getini, 'other') + pytest.raises(ValueError, config.getini, 'other') def test_addini_args(self, testdir): testdir.makeconftest(""" diff --git a/testing/test_conftest.py b/testing/test_conftest.py index 19221e09a..e25b68abf 100644 --- a/testing/test_conftest.py +++ b/testing/test_conftest.py @@ -1,4 +1,4 @@ -import py +import py, pytest from _pytest.config import Conftest def pytest_generate_tests(metafunc): @@ -56,8 +56,8 @@ class TestConftestValueAccessGlobal: def test_value_access_not_existing(self, basedir): conftest = ConftestWithSetinitial(basedir) - py.test.raises(KeyError, "conftest.rget('a')") - #py.test.raises(KeyError, "conftest.lget('a')") + pytest.raises(KeyError, "conftest.rget('a')") + #pytest.raises(KeyError, "conftest.lget('a')") def test_value_access_by_path(self, basedir): conftest = ConftestWithSetinitial(basedir) @@ -66,7 +66,7 @@ class TestConftestValueAccessGlobal: assert conftest.rget("a", basedir.join('adir', 'b')) == 1.5 #assert conftest.lget("a", basedir.join('adir', 'b')) == 1 #assert conftest.lget("b", basedir.join('adir', 'b')) == 2 - #assert py.test.raises(KeyError, + #assert pytest.raises(KeyError, # 'conftest.lget("b", basedir.join("a"))' #) @@ -109,7 +109,7 @@ def test_doubledash_not_considered(testdir): def test_conftest_global_import(testdir): testdir.makeconftest("x=3") p = testdir.makepyfile(""" - import py + import py, pytest from _pytest.config import Conftest conf = Conftest() mod = conf.importconftest(py.path.local("conftest.py")) @@ -185,7 +185,7 @@ def test_conftest_samecontent_detection(testdir): assert len(l) == 1 assert l[0].__file__ == p.join("conftest.py") -@py.test.mark.multi(name='test tests whatever .dotdir'.split()) +@pytest.mark.multi(name='test tests whatever .dotdir'.split()) def test_setinitial_conftest_subdirs(testdir, name): sub = testdir.mkdir(name) subconftest = sub.ensure("conftest.py") diff --git a/testing/test_core.py b/testing/test_core.py index a68d89f68..ccf514975 100644 --- a/testing/test_core.py +++ b/testing/test_core.py @@ -1,4 +1,4 @@ -import py, os +import pytest, py, os from _pytest.core import PluginManager, canonical_importname from _pytest.core import MultiCall, HookRelay, varnames @@ -7,18 +7,18 @@ class TestBootstrapping: def test_consider_env_fails_to_import(self, monkeypatch): pluginmanager = PluginManager() monkeypatch.setenv('PYTEST_PLUGINS', 'nonexisting', prepend=",") - py.test.raises(ImportError, "pluginmanager.consider_env()") + pytest.raises(ImportError, "pluginmanager.consider_env()") def test_preparse_args(self): pluginmanager = PluginManager() - py.test.raises(ImportError, """ + pytest.raises(ImportError, """ pluginmanager.consider_preparse(["xyz", "-p", "hello123"]) """) def test_plugin_skip(self, testdir, monkeypatch): p = testdir.makepyfile(pytest_skipping1=""" - import py - py.test.skip("hello") + import pytest + pytest.skip("hello") """) p.copy(p.dirpath("pytest_skipping2.py")) monkeypatch.setenv("PYTEST_PLUGINS", "skipping2") @@ -73,7 +73,7 @@ class TestBootstrapping: def test_pluginmanager_ENV_startup(self, testdir, monkeypatch): x500 = testdir.makepyfile(pytest_x500="#") p = testdir.makepyfile(""" - import py + import pytest def test_hello(pytestconfig): plugin = pytestconfig.pluginmanager.getplugin('x500') assert plugin is not None @@ -85,8 +85,8 @@ class TestBootstrapping: def test_import_plugin_importname(self, testdir): pluginmanager = PluginManager() - py.test.raises(ImportError, 'pluginmanager.import_plugin("qweqwex.y")') - py.test.raises(ImportError, 'pluginmanager.import_plugin("pytest_qweqwx.y")') + pytest.raises(ImportError, 'pluginmanager.import_plugin("qweqwex.y")') + pytest.raises(ImportError, 'pluginmanager.import_plugin("pytest_qweqwx.y")') reset = testdir.syspathinsert() pluginname = "pytest_hello" @@ -103,8 +103,8 @@ class TestBootstrapping: def test_import_plugin_dotted_name(self, testdir): pluginmanager = PluginManager() - py.test.raises(ImportError, 'pluginmanager.import_plugin("qweqwex.y")') - py.test.raises(ImportError, 'pluginmanager.import_plugin("pytest_qweqwex.y")') + pytest.raises(ImportError, 'pluginmanager.import_plugin("qweqwex.y")') + pytest.raises(ImportError, 'pluginmanager.import_plugin("pytest_qweqwex.y")') reset = testdir.syspathinsert() testdir.mkpydir("pkg").join("plug.py").write("x=3") @@ -148,7 +148,7 @@ class TestBootstrapping: def test_consider_conftest_deps(self, testdir): mod = testdir.makepyfile("pytest_plugins='xyz'").pyimport() pp = PluginManager() - py.test.raises(ImportError, "pp.consider_conftest(mod)") + pytest.raises(ImportError, "pp.consider_conftest(mod)") def test_pm(self): pp = PluginManager() @@ -187,10 +187,10 @@ class TestBootstrapping: assert pp.isregistered(mod) l = pp.getplugins() assert mod in l - py.test.raises(AssertionError, "pp.register(mod)") + pytest.raises(AssertionError, "pp.register(mod)") mod2 = py.std.types.ModuleType("pytest_hello") #pp.register(mod2) # double pm - py.test.raises(AssertionError, "pp.register(mod)") + pytest.raises(AssertionError, "pp.register(mod)") #assert not pp.isregistered(mod2) assert pp.getplugins() == l @@ -208,14 +208,14 @@ class TestBootstrapping: class hello: def pytest_gurgel(self): pass - py.test.raises(Exception, "pp.register(hello())") + pytest.raises(Exception, "pp.register(hello())") def test_register_mismatch_arg(self): pp = PluginManager(load=True) class hello: def pytest_configure(self, asd): pass - excinfo = py.test.raises(Exception, "pp.register(hello())") + excinfo = pytest.raises(Exception, "pp.register(hello())") def test_canonical_importname(self): for name in 'xyz', 'pytest_xyz', 'pytest_Xyz', 'Xyz': @@ -223,7 +223,7 @@ class TestBootstrapping: def test_notify_exception(self, capfd): pp = PluginManager() - excinfo = py.test.raises(ValueError, "raise ValueError(1)") + excinfo = pytest.raises(ValueError, "raise ValueError(1)") pp.notify_exception(excinfo) out, err = capfd.readouterr() assert "ValueError" in err @@ -283,7 +283,7 @@ class TestBootstrapping: assert pm.trace.root.indent == indent assert len(l) == 1 assert 'pytest_plugin_registered' in l[0] - py.test.raises(ValueError, lambda: pm.register(api1())) + pytest.raises(ValueError, lambda: pm.register(api1())) assert pm.trace.root.indent == indent assert saveindent[0] > indent @@ -420,8 +420,8 @@ class TestPytestPluginInteractions: def test_namespace_has_default_and_env_plugins(testdir): p = testdir.makepyfile(""" - import py - py.test.mark + import pytest + pytest.mark """) result = testdir.runpython(p) assert result.ret == 0 @@ -493,7 +493,7 @@ class TestMultiCall: def test_tags_call_error(self): multicall = MultiCall([lambda x: x], {}) - py.test.raises(TypeError, "multicall.execute()") + pytest.raises(TypeError, "multicall.execute()") def test_call_subexecute(self): def m(__multicall__): @@ -541,7 +541,7 @@ class TestHookRelay: def hello(self, arg): "api hook 1" mcm = HookRelay(hookspecs=Api, pm=pm, prefix="he") - py.test.raises(TypeError, "mcm.hello(3)") + pytest.raises(TypeError, "mcm.hello(3)") def test_firstresult_definition(self): pm = PluginManager() diff --git a/testing/test_doctest.py b/testing/test_doctest.py index a7a30edbf..fb7bb82e6 100644 --- a/testing/test_doctest.py +++ b/testing/test_doctest.py @@ -1,5 +1,5 @@ from _pytest.doctest import DoctestModule, DoctestTextfile -import py +import py, pytest class TestDoctests: @@ -58,7 +58,7 @@ class TestDoctests: assert call.report.longrepr # XXX #testitem, = items - #excinfo = py.test.raises(Failed, "testitem.runtest()") + #excinfo = pytest.raises(Failed, "testitem.runtest()") #repr = testitem.repr_failure(excinfo, ("", "")) #assert repr.reprlocation diff --git a/testing/test_helpconfig.py b/testing/test_helpconfig.py index b08c1cdc1..443ae7a82 100644 --- a/testing/test_helpconfig.py +++ b/testing/test_helpconfig.py @@ -43,8 +43,8 @@ def test_hookvalidation_unknown(testdir): def test_hookvalidation_optional(testdir): testdir.makeconftest(""" - import py - @py.test.mark.optionalhook + import pytest + @pytest.mark.optionalhook def pytest_hello(xyz): pass """) diff --git a/testing/test_junitxml.py b/testing/test_junitxml.py index 36def8dbd..186f5c84b 100644 --- a/testing/test_junitxml.py +++ b/testing/test_junitxml.py @@ -20,17 +20,17 @@ def assert_attr(node, **kwargs): class TestPython: def test_summing_simple(self, testdir): testdir.makepyfile(""" - import py + import pytest def test_pass(): pass def test_fail(): assert 0 def test_skip(): - py.test.skip("") - @py.test.mark.xfail + pytest.skip("") + @pytest.mark.xfail def test_xfail(): assert 0 - @py.test.mark.xfail + @pytest.mark.xfail def test_xpass(): assert 1 """) @@ -157,9 +157,9 @@ class TestPython: def test_xfailure_function(self, testdir): testdir.makepyfile(""" - import py + import pytest def test_xfail(): - py.test.xfail("42") + pytest.xfail("42") """) result, dom = runandparse(testdir) assert not result.ret @@ -175,8 +175,8 @@ class TestPython: def test_xfailure_xpass(self, testdir): testdir.makepyfile(""" - import py - @py.test.mark.xfail + import pytest + @pytest.mark.xfail def test_xpass(): pass """) @@ -207,7 +207,7 @@ class TestPython: assert "SyntaxError" in fnode.toxml() def test_collect_skipped(self, testdir): - testdir.makepyfile("import py ; py.test.skip('xyz')") + testdir.makepyfile("import pytest; pytest.skip('xyz')") result, dom = runandparse(testdir) assert not result.ret node = dom.getElementsByTagName("testsuite")[0] diff --git a/testing/test_mark.py b/testing/test_mark.py index 8aab88430..b924a2237 100644 --- a/testing/test_mark.py +++ b/testing/test_mark.py @@ -1,10 +1,10 @@ -import py +import py, pytest from _pytest.mark import MarkGenerator as Mark class TestMark: def test_pytest_mark_notcallable(self): mark = Mark() - py.test.raises((AttributeError, TypeError), "mark()") + pytest.raises((AttributeError, TypeError), "mark()") def test_pytest_mark_bare(self): mark = Mark() @@ -47,8 +47,8 @@ class TestMark: class TestFunctional: def test_mark_per_function(self, testdir): p = testdir.makepyfile(""" - import py - @py.test.mark.hello + import pytest + @pytest.mark.hello def test_hello(): assert hasattr(test_hello, 'hello') """) @@ -57,8 +57,8 @@ class TestFunctional: def test_mark_per_module(self, testdir): item = testdir.getitem(""" - import py - pytestmark = py.test.mark.hello + import pytest + pytestmark = pytest.mark.hello def test_func(): pass """) @@ -67,9 +67,9 @@ class TestFunctional: def test_marklist_per_class(self, testdir): item = testdir.getitem(""" - import py + import pytest class TestClass: - pytestmark = [py.test.mark.hello, py.test.mark.world] + pytestmark = [pytest.mark.hello, pytest.mark.world] def test_func(self): assert TestClass.test_func.hello assert TestClass.test_func.world @@ -79,8 +79,8 @@ class TestFunctional: def test_marklist_per_module(self, testdir): item = testdir.getitem(""" - import py - pytestmark = [py.test.mark.hello, py.test.mark.world] + import pytest + pytestmark = [pytest.mark.hello, pytest.mark.world] class TestClass: def test_func(self): assert TestClass.test_func.hello @@ -90,11 +90,11 @@ class TestFunctional: assert 'hello' in keywords assert 'world' in keywords - @py.test.mark.skipif("sys.version_info < (2,6)") + @pytest.mark.skipif("sys.version_info < (2,6)") def test_mark_per_class_decorator(self, testdir): item = testdir.getitem(""" - import py - @py.test.mark.hello + import pytest + @pytest.mark.hello class TestClass: def test_func(self): assert TestClass.test_func.hello @@ -102,13 +102,13 @@ class TestFunctional: keywords = item.keywords assert 'hello' in keywords - @py.test.mark.skipif("sys.version_info < (2,6)") + @pytest.mark.skipif("sys.version_info < (2,6)") def test_mark_per_class_decorator_plus_existing_dec(self, testdir): item = testdir.getitem(""" - import py - @py.test.mark.hello + import pytest + @pytest.mark.hello class TestClass: - pytestmark = py.test.mark.world + pytestmark = pytest.mark.world def test_func(self): assert TestClass.test_func.hello assert TestClass.test_func.world @@ -119,12 +119,12 @@ class TestFunctional: def test_merging_markers(self, testdir): p = testdir.makepyfile(""" - import py - pytestmark = py.test.mark.hello("pos1", x=1, y=2) + import pytest + pytestmark = pytest.mark.hello("pos1", x=1, y=2) class TestClass: # classlevel overrides module level - pytestmark = py.test.mark.hello(x=3) - @py.test.mark.hello("pos0", z=4) + pytestmark = pytest.mark.hello(x=3) + @pytest.mark.hello("pos0", z=4) def test_func(self): pass """) @@ -136,9 +136,9 @@ class TestFunctional: assert marker.kwargs == {'x': 3, 'y': 2, 'z': 4} def test_mark_other(self, testdir): - py.test.raises(TypeError, ''' + pytest.raises(TypeError, ''' testdir.getitem(""" - import py + import pytest class pytestmark: pass def test_func(): @@ -148,9 +148,9 @@ class TestFunctional: def test_mark_dynamically_in_funcarg(self, testdir): testdir.makeconftest(""" - import py + import pytest def pytest_funcarg__arg(request): - request.applymarker(py.test.mark.hello) + request.applymarker(pytest.mark.hello) def pytest_terminal_summary(terminalreporter): l = terminalreporter.stats['passed'] terminalreporter._tw.line("keyword: %s" % l[0].keywords) @@ -187,7 +187,7 @@ class Test_genitems: # do we want to unify behaviour with # test_subdir_conftest_error? p = testdir.makepyfile(conftest="raise SyntaxError\n") - py.test.raises(SyntaxError, testdir.inline_genitems, p.dirpath()) + pytest.raises(SyntaxError, testdir.inline_genitems, p.dirpath()) def test_example_items1(self, testdir): p = testdir.makepyfile(''' @@ -247,7 +247,6 @@ class TestKeywordSelection: pass """) testdir.makepyfile(conftest=""" - import py def pytest_pycollect_makeitem(__multicall__, name): if name == "TestClass": item = __multicall__.execute() diff --git a/testing/test_monkeypatch.py b/testing/test_monkeypatch.py index d6cbdd0eb..973811025 100644 --- a/testing/test_monkeypatch.py +++ b/testing/test_monkeypatch.py @@ -1,12 +1,12 @@ import os, sys -import py +import pytest from _pytest.monkeypatch import monkeypatch as MonkeyPatch def test_setattr(): class A: x = 1 monkeypatch = MonkeyPatch() - py.test.raises(AttributeError, "monkeypatch.setattr(A, 'notexists', 2)") + pytest.raises(AttributeError, "monkeypatch.setattr(A, 'notexists', 2)") monkeypatch.setattr(A, 'y', 2, raising=False) assert A.y == 2 monkeypatch.undo() @@ -35,7 +35,7 @@ def test_delattr(): monkeypatch = MonkeyPatch() monkeypatch.delattr(A, 'x') - py.test.raises(AttributeError, "monkeypatch.delattr(A, 'y')") + pytest.raises(AttributeError, "monkeypatch.delattr(A, 'y')") monkeypatch.delattr(A, 'y', raising=False) monkeypatch.setattr(A, 'x', 5, raising=False) assert A.x == 5 @@ -65,7 +65,7 @@ def test_delitem(): monkeypatch.delitem(d, 'x') assert 'x' not in d monkeypatch.delitem(d, 'y', raising=False) - py.test.raises(KeyError, "monkeypatch.delitem(d, 'y')") + pytest.raises(KeyError, "monkeypatch.delitem(d, 'y')") assert not d monkeypatch.setitem(d, 'y', 1700) assert d['y'] == 1700 @@ -87,7 +87,7 @@ def test_delenv(): name = 'xyz1234' assert name not in os.environ monkeypatch = MonkeyPatch() - py.test.raises(KeyError, "monkeypatch.delenv(%r, raising=True)" % name) + pytest.raises(KeyError, "monkeypatch.delenv(%r, raising=True)" % name) monkeypatch.delenv(name, raising=False) monkeypatch.undo() os.environ[name] = "1" diff --git a/testing/test_nose.py b/testing/test_nose.py index 2554d29b1..317a3041a 100644 --- a/testing/test_nose.py +++ b/testing/test_nose.py @@ -1,4 +1,4 @@ -import py +import py, pytest def setup_module(mod): mod.nose = py.test.importorskip("nose") diff --git a/testing/test_parseopt.py b/testing/test_parseopt.py index 9a7697625..d4ea789ad 100644 --- a/testing/test_parseopt.py +++ b/testing/test_parseopt.py @@ -1,11 +1,11 @@ -import py +import py, pytest from _pytest import config as parseopt from textwrap import dedent class TestParser: def test_no_help_by_default(self, capsys): parser = parseopt.Parser(usage="xyz") - py.test.raises(SystemExit, 'parser.parse(["-h"])') + pytest.raises(SystemExit, 'parser.parse(["-h"])') out, err = capsys.readouterr() assert err.find("no such option") != -1 @@ -41,7 +41,7 @@ class TestParser: def test_group_shortopt_lowercase(self): parser = parseopt.Parser() group = parser.getgroup("hello") - py.test.raises(ValueError, """ + pytest.raises(ValueError, """ group.addoption("-x", action="store_true") """) assert len(group.options) == 0 @@ -102,7 +102,7 @@ class TestParser: assert option.this == 42 -@py.test.mark.skipif("sys.version_info < (2,5)") +@pytest.mark.skipif("sys.version_info < (2,5)") def test_addoption_parser_epilog(testdir): testdir.makeconftest(""" def pytest_addoption(parser): diff --git a/testing/test_pastebin.py b/testing/test_pastebin.py index c3403ed7a..cc23d0e25 100644 --- a/testing/test_pastebin.py +++ b/testing/test_pastebin.py @@ -12,13 +12,13 @@ class TestPasting: def test_failed(self, testdir, pastebinlist): testpath = testdir.makepyfile(""" - import py + import pytest def test_pass(): pass def test_fail(): assert 0 def test_skip(): - py.test.skip("") + pytest.skip("") """) reprec = testdir.inline_run(testpath, "--paste=failed") assert len(pastebinlist) == 1 @@ -29,13 +29,13 @@ class TestPasting: def test_all(self, testdir, pastebinlist): testpath = testdir.makepyfile(""" - import py + import pytest def test_pass(): pass def test_fail(): assert 0 def test_skip(): - py.test.skip("") + pytest.skip("") """) reprec = testdir.inline_run(testpath, "--pastebin=all") assert reprec.countoutcomes() == [1,1,1] diff --git a/testing/test_pdb.py b/testing/test_pdb.py index 1260b0724..5614a1371 100644 --- a/testing/test_pdb.py +++ b/testing/test_pdb.py @@ -1,4 +1,4 @@ -import py +import py, pytest import sys class TestPDB: @@ -23,8 +23,8 @@ class TestPDB: def test_pdb_on_xfail(self, testdir, pdblist): rep = testdir.inline_runsource1('--pdb', """ - import py - @py.test.mark.xfail + import pytest + @pytest.mark.xfail def test_func(): assert 0 """) @@ -33,16 +33,16 @@ class TestPDB: def test_pdb_on_skip(self, testdir, pdblist): rep = testdir.inline_runsource1('--pdb', """ - import py + import pytest def test_func(): - py.test.skip("hello") + pytest.skip("hello") """) assert rep.skipped assert len(pdblist) == 0 def test_pdb_on_BdbQuit(self, testdir, pdblist): rep = testdir.inline_runsource1('--pdb', """ - import py, bdb + import bdb def test_func(): raise bdb.BdbQuit """) @@ -68,15 +68,15 @@ class TestPDB: def test_pdb_interaction_exception(self, testdir): p1 = testdir.makepyfile(""" - import py + import pytest def globalfunc(): pass def test_1(): - py.test.raises(ValueError, globalfunc) + pytest.raises(ValueError, globalfunc) """) child = testdir.spawn_pytest("--pdb %s" % p1) child.expect(".*def test_1") - child.expect(".*py.test.raises.*globalfunc") + child.expect(".*pytest.raises.*globalfunc") child.expect("(Pdb)") child.sendline("globalfunc") child.expect(".*function") @@ -87,11 +87,11 @@ class TestPDB: def test_pdb_interaction_capturing_simple(self, testdir): p1 = testdir.makepyfile(""" - import py + import pytest def test_1(): i = 0 print ("hello17") - py.test.set_trace() + pytest.set_trace() x = 3 """) child = testdir.spawn_pytest(str(p1)) @@ -108,14 +108,14 @@ class TestPDB: def test_pdb_interaction_capturing_twice(self, testdir): p1 = testdir.makepyfile(""" - import py + import pytest def test_1(): i = 0 print ("hello17") - py.test.set_trace() + pytest.set_trace() x = 3 print ("hello18") - py.test.set_trace() + pytest.set_trace() x = 4 """) child = testdir.spawn_pytest(str(p1)) @@ -135,8 +135,8 @@ class TestPDB: def test_pdb_used_outside_test(self, testdir): p1 = testdir.makepyfile(""" - import py - py.test.set_trace() + import pytest + pytest.set_trace() x = 5 """) child = testdir.spawn("%s %s" %(sys.executable, p1)) diff --git a/testing/test_pytester.py b/testing/test_pytester.py index 66ada43a6..87878d734 100644 --- a/testing/test_pytester.py +++ b/testing/test_pytester.py @@ -1,4 +1,4 @@ -import py +import pytest import os, sys from _pytest.pytester import LineMatcher, LineComp, HookRecorder from _pytest.core import PluginManager @@ -8,7 +8,7 @@ def test_reportrecorder(testdir): recorder = testdir.getreportrecorder(item.config) assert not recorder.getfailures() - py.test.xfail("internal reportrecorder tests need refactoring") + pytest.xfail("internal reportrecorder tests need refactoring") class rep: excinfo = None passed = False @@ -51,10 +51,11 @@ def test_reportrecorder(testdir): recorder.unregister() recorder.clear() recorder.hook.pytest_runtest_logreport(report=rep) - py.test.raises(ValueError, "recorder.getfailures()") + pytest.raises(ValueError, "recorder.getfailures()") def test_parseconfig(testdir): + import py config1 = testdir.parseconfig() config2 = testdir.parseconfig() assert config2 != config1 @@ -81,7 +82,7 @@ def test_hookrecorder_basic(): call = rec.popcall("pytest_xyz") assert call.arg == 123 assert call._name == "pytest_xyz" - py.test.raises(ValueError, "rec.popcall('abc')") + pytest.raises(ValueError, "rec.popcall('abc')") def test_hookrecorder_basic_no_args_hook(): rec = HookRecorder(PluginManager()) @@ -96,7 +97,7 @@ def test_hookrecorder_basic_no_args_hook(): def test_functional(testdir, linecomp): reprec = testdir.inline_runsource(""" - import py + import pytest from _pytest.core import HookRelay, PluginManager pytest_plugins="pytester" def test_func(_pytest): diff --git a/testing/test_python.py b/testing/test_python.py index e8fe56210..185925500 100644 --- a/testing/test_python.py +++ b/testing/test_python.py @@ -4,8 +4,8 @@ from _pytest import python as funcargs class TestModule: def test_failing_import(self, testdir): modcol = testdir.getmodulecol("import alksdjalskdjalkjals") - py.test.raises(ImportError, modcol.collect) - py.test.raises(ImportError, modcol.collect) + pytest.raises(ImportError, modcol.collect) + pytest.raises(ImportError, modcol.collect) def test_import_duplicate(self, testdir): a = testdir.mkdir("a") @@ -26,12 +26,12 @@ class TestModule: def test_syntax_error_in_module(self, testdir): modcol = testdir.getmodulecol("this is a syntax error") - py.test.raises(modcol.CollectError, modcol.collect) - py.test.raises(modcol.CollectError, modcol.collect) + pytest.raises(modcol.CollectError, modcol.collect) + pytest.raises(modcol.CollectError, modcol.collect) def test_module_considers_pluginmanager_at_import(self, testdir): modcol = testdir.getmodulecol("pytest_plugins='xasdlkj',") - py.test.raises(ImportError, "modcol.obj") + pytest.raises(ImportError, "modcol.obj") class TestClass: def test_class_with_init_not_collected(self, testdir): @@ -119,7 +119,7 @@ class TestGenerator: assert len(colitems) == 1 gencol = colitems[0] assert isinstance(gencol, pytest.Generator) - py.test.raises(ValueError, "gencol.collect()") + pytest.raises(ValueError, "gencol.collect()") def test_generative_methods_with_explicit_names(self, testdir): modcol = testdir.getmodulecol(""" @@ -144,7 +144,7 @@ class TestGenerator: def test_order_of_execution_generator_same_codeline(self, testdir, tmpdir): o = testdir.makepyfile(""" def test_generative_order_of_execution(): - import py + import py, pytest test_list = [] expected_list = list(range(6)) @@ -168,7 +168,7 @@ class TestGenerator: def test_order_of_execution_generator_different_codeline(self, testdir): o = testdir.makepyfile(""" def test_generative_tests_different_codeline(): - import py + import py, pytest test_list = [] expected_list = list(range(3)) @@ -351,7 +351,7 @@ def test_setup_only_available_in_subdir(testdir): sub1 = testdir.mkpydir("sub1") sub2 = testdir.mkpydir("sub2") sub1.join("conftest.py").write(py.code.Source(""" - import py + import pytest def pytest_runtest_setup(item): assert item.fspath.purebasename == "test_in_sub1" def pytest_runtest_call(item): @@ -360,7 +360,7 @@ def test_setup_only_available_in_subdir(testdir): assert item.fspath.purebasename == "test_in_sub1" """)) sub2.join("conftest.py").write(py.code.Source(""" - import py + import pytest def pytest_runtest_setup(item): assert item.fspath.purebasename == "test_in_sub2" def pytest_runtest_call(item): @@ -402,7 +402,7 @@ def test_modulecol_roundtrip(testdir): class TestTracebackCutting: def test_skip_simple(self): - excinfo = py.test.raises(py.test.skip.Exception, 'py.test.skip("xxx")') + excinfo = pytest.raises(pytest.skip.Exception, 'pytest.skip("xxx")') assert excinfo.traceback[-1].frame.code.name == "skip" assert excinfo.traceback[-1].ishidden() @@ -480,7 +480,7 @@ class TestFillFuncArgs: return 42 """) item = testdir.getitem("def test_func(some): pass") - exc = py.test.raises(funcargs.FuncargRequest.LookupError, + exc = pytest.raises(funcargs.FuncargRequest.LookupError, "funcargs.fillfuncargs(item)") s = str(exc.value) assert s.find("xyzsomething") != -1 @@ -611,7 +611,7 @@ class TestRequest: def test_func(something): pass """) req = funcargs.FuncargRequest(item) - py.test.raises(req.LookupError, req.getfuncargvalue, "notexists") + pytest.raises(req.LookupError, req.getfuncargvalue, "notexists") val = req.getfuncargvalue("something") assert val == 1 val = req.getfuncargvalue("something") @@ -672,12 +672,12 @@ def test_applymarker(testdir): """) req1 = funcargs.FuncargRequest(item1) assert 'xfail' not in item1.keywords - req1.applymarker(py.test.mark.xfail) + req1.applymarker(pytest.mark.xfail) assert 'xfail' in item1.keywords assert 'skipif' not in item1.keywords - req1.applymarker(py.test.mark.skipif) + req1.applymarker(pytest.mark.skipif) assert 'skipif' in item1.keywords - py.test.raises(ValueError, "req1.applymarker(42)") + pytest.raises(ValueError, "req1.applymarker(42)") class TestRequestCachedSetup: def test_request_cachedsetup(self, testdir): @@ -815,11 +815,11 @@ class TestMetafunc: def test_addcall_id(self): def func(arg1): pass metafunc = funcargs.Metafunc(func) - py.test.raises(ValueError, "metafunc.addcall(id=None)") + pytest.raises(ValueError, "metafunc.addcall(id=None)") metafunc.addcall(id=1) - py.test.raises(ValueError, "metafunc.addcall(id=1)") - py.test.raises(ValueError, "metafunc.addcall(id='1')") + pytest.raises(ValueError, "metafunc.addcall(id=1)") + pytest.raises(ValueError, "metafunc.addcall(id='1')") metafunc.addcall(id=2) assert len(metafunc._calls) == 2 assert metafunc._calls[0].id == "1" @@ -852,7 +852,7 @@ class TestGenfuncFunctional: def test_attributes(self, testdir): p = testdir.makepyfile(""" # assumes that generate/provide runs in the same process - import py + import py, pytest def pytest_generate_tests(metafunc): metafunc.addcall(param=metafunc) @@ -990,14 +990,14 @@ def test_conftest_funcargs_only_available_in_subdir(testdir): sub1 = testdir.mkpydir("sub1") sub2 = testdir.mkpydir("sub2") sub1.join("conftest.py").write(py.code.Source(""" - import py + import pytest def pytest_funcarg__arg1(request): - py.test.raises(Exception, "request.getfuncargvalue('arg2')") + pytest.raises(Exception, "request.getfuncargvalue('arg2')") """)) sub2.join("conftest.py").write(py.code.Source(""" - import py + import pytest def pytest_funcarg__arg2(request): - py.test.raises(Exception, "request.getfuncargvalue('arg1')") + pytest.raises(Exception, "request.getfuncargvalue('arg1')") """)) sub1.join("test_in_sub1.py").write("def test_1(arg1): pass") @@ -1121,50 +1121,50 @@ def test_show_funcarg(testdir): class TestRaises: def test_raises(self): source = "int('qwe')" - excinfo = py.test.raises(ValueError, source) + excinfo = pytest.raises(ValueError, source) code = excinfo.traceback[-1].frame.code s = str(code.fullsource) assert s == source def test_raises_exec(self): - py.test.raises(ValueError, "a,x = []") + pytest.raises(ValueError, "a,x = []") def test_raises_syntax_error(self): - py.test.raises(SyntaxError, "qwe qwe qwe") + pytest.raises(SyntaxError, "qwe qwe qwe") def test_raises_function(self): - py.test.raises(ValueError, int, 'hello') + pytest.raises(ValueError, int, 'hello') def test_raises_callable_no_exception(self): class A: def __call__(self): pass try: - py.test.raises(ValueError, A()) - except py.test.raises.Exception: + pytest.raises(ValueError, A()) + except pytest.raises.Exception: pass - @py.test.mark.skipif('sys.version < "2.5"') + @pytest.mark.skipif('sys.version < "2.5"') def test_raises_as_contextmanager(self, testdir): testdir.makepyfile(""" from __future__ import with_statement - import py + import py, pytest def test_simple(): - with py.test.raises(ZeroDivisionError) as excinfo: + with pytest.raises(ZeroDivisionError) as excinfo: assert isinstance(excinfo, py.code.ExceptionInfo) 1/0 print (excinfo) assert excinfo.type == ZeroDivisionError def test_noraise(): - with py.test.raises(py.test.raises.Exception): - with py.test.raises(ValueError): + with pytest.raises(pytest.raises.Exception): + with pytest.raises(ValueError): int() def test_raise_wrong_exception_passes_by(): - with py.test.raises(ZeroDivisionError): - with py.test.raises(ValueError): + with pytest.raises(ZeroDivisionError): + with pytest.raises(ValueError): 1/0 """) result = testdir.runpytest() diff --git a/testing/test_recwarn.py b/testing/test_recwarn.py index d5bc6cfcc..492f41e63 100644 --- a/testing/test_recwarn.py +++ b/testing/test_recwarn.py @@ -1,4 +1,4 @@ -import py +import py, pytest from _pytest.recwarn import WarningsRecorder def test_WarningRecorder(recwarn): @@ -16,7 +16,7 @@ def test_WarningRecorder(recwarn): rec.clear() assert len(rec.list) == 0 assert l is rec.list - py.test.raises(AssertionError, "rec.pop()") + pytest.raises(AssertionError, "rec.pop()") rec.finalize() assert showwarning == py.std.warnings.showwarning @@ -52,7 +52,7 @@ def dep_explicit(i): filename="hello", lineno=3) def test_deprecated_call_raises(): - excinfo = py.test.raises(AssertionError, + excinfo = pytest.raises(AssertionError, "py.test.deprecated_call(dep, 3)") assert str(excinfo).find("did not produce") != -1 @@ -72,7 +72,7 @@ def test_deprecated_call_preserves(): assert f == py.std.warnings.filters def test_deprecated_explicit_call_raises(): - py.test.raises(AssertionError, + pytest.raises(AssertionError, "py.test.deprecated_call(dep_explicit, 3)") def test_deprecated_explicit_call(): diff --git a/testing/test_resultlog.py b/testing/test_resultlog.py index 812f93657..973e1277b 100644 --- a/testing/test_resultlog.py +++ b/testing/test_resultlog.py @@ -1,4 +1,4 @@ -import py +import py, pytest import os from _pytest.resultlog import generic_path, ResultLog, \ pytest_configure, pytest_unconfigure @@ -79,7 +79,8 @@ class TestWithFunctionIntegration: def test_collection_report(self, testdir): ok = testdir.makepyfile(test_collection_ok="") - skip = testdir.makepyfile(test_collection_skip="import py ; py.test.skip('hello')") + skip = testdir.makepyfile(test_collection_skip= + "import pytest ; pytest.skip('hello')") fail = testdir.makepyfile(test_collection_fail="XXX") lines = self.getresultlog(testdir, ok) assert not lines @@ -101,14 +102,14 @@ class TestWithFunctionIntegration: def test_log_test_outcomes(self, testdir): mod = testdir.makepyfile(test_mod=""" - import py + import pytest def test_pass(): pass - def test_skip(): py.test.skip("hello") + def test_skip(): pytest.skip("hello") def test_fail(): raise ValueError("FAIL") - @py.test.mark.xfail + @pytest.mark.xfail def test_xfail(): raise ValueError("XFAIL") - @py.test.mark.xfail + @pytest.mark.xfail def test_xpass(): pass """) @@ -152,17 +153,17 @@ class TestWithFunctionIntegration: def test_generic(testdir, LineMatcher): testdir.plugins.append("resultlog") testdir.makepyfile(""" - import py + import pytest def test_pass(): pass def test_fail(): assert 0 def test_skip(): - py.test.skip("") - @py.test.mark.xfail + pytest.skip("") + @pytest.mark.xfail def test_xfail(): assert 0 - @py.test.mark.xfail(run=False) + @pytest.mark.xfail(run=False) def test_xfail_norun(): assert 0 """) diff --git a/testing/test_runner.py b/testing/test_runner.py index 9dfaba02c..1cf062d0b 100644 --- a/testing/test_runner.py +++ b/testing/test_runner.py @@ -1,4 +1,4 @@ -import py, sys +import pytest, py, sys from _pytest import runner from py._code.code import ReprExceptionInfo @@ -41,8 +41,8 @@ class TestSetupState: def test_func(): pass """) ss = runner.SetupState() - py.test.raises(ValueError, "ss.prepare(item)") - py.test.raises(ValueError, "ss.prepare(item)") + pytest.raises(ValueError, "ss.prepare(item)") + pytest.raises(ValueError, "ss.prepare(item)") class BaseFunctionalTests: def test_passfunction(self, testdir): @@ -71,9 +71,9 @@ class BaseFunctionalTests: def test_skipfunction(self, testdir): reports = testdir.runitem(""" - import py + import pytest def test_func(): - py.test.skip("hello") + pytest.skip("hello") """) rep = reports[1] assert not rep.failed @@ -89,9 +89,9 @@ class BaseFunctionalTests: def test_skip_in_setup_function(self, testdir): reports = testdir.runitem(""" - import py + import pytest def setup_function(func): - py.test.skip("hello") + pytest.skip("hello") def test_func(): pass """) @@ -108,7 +108,7 @@ class BaseFunctionalTests: def test_failure_in_setup_function(self, testdir): reports = testdir.runitem(""" - import py + import pytest def setup_function(func): raise ValueError(42) def test_func(): @@ -123,7 +123,7 @@ class BaseFunctionalTests: def test_failure_in_teardown_function(self, testdir): reports = testdir.runitem(""" - import py + import pytest def teardown_function(func): raise ValueError(42) def test_func(): @@ -147,7 +147,7 @@ class BaseFunctionalTests: return "hello" """) reports = testdir.runitem(""" - import py + import pytest def test_func(): assert 0 """) @@ -226,7 +226,7 @@ class TestExecutionNonForked(BaseFunctionalTests): py.test.fail("did not raise") class TestExecutionForked(BaseFunctionalTests): - pytestmark = py.test.mark.skipif("not hasattr(os, 'fork')") + pytestmark = pytest.mark.skipif("not hasattr(os, 'fork')") def getrunner(self): # XXX re-arrange this test to live in pytest-xdist @@ -289,7 +289,7 @@ def test_callinfo(): # design question: do we want general hooks in python files? # then something like the following functional tests makes sense -@py.test.mark.xfail +@pytest.mark.xfail def test_runtest_in_module_ordering(testdir): p1 = testdir.makepyfile(""" def pytest_runtest_setup(item): # runs after class-level! @@ -336,8 +336,8 @@ def test_pytest_fail(): def test_exception_printing_skip(): try: - py.test.skip("hello") - except py.test.skip.Exception: + pytest.skip("hello") + except pytest.skip.Exception: excinfo = py.code.ExceptionInfo() s = excinfo.exconly(tryshort=True) assert s.startswith("Skipped") @@ -351,20 +351,20 @@ def test_importorskip(): assert sys == py.std.sys #path = py.test.importorskip("os.path") #assert path == py.std.os.path - excinfo = py.test.raises(py.test.skip.Exception, f) + excinfo = pytest.raises(pytest.skip.Exception, f) path = py.path.local(excinfo.getrepr().reprcrash.path) # check that importorskip reports the actual call # in this test the test_runner.py file assert path.purebasename == "test_runner" - py.test.raises(SyntaxError, "py.test.importorskip('x y z')") - py.test.raises(SyntaxError, "py.test.importorskip('x=y')") + pytest.raises(SyntaxError, "py.test.importorskip('x y z')") + pytest.raises(SyntaxError, "py.test.importorskip('x=y')") path = importorskip("py", minversion=".".join(py.__version__)) mod = py.std.types.ModuleType("hello123") mod.__version__ = "1.3" - py.test.raises(py.test.skip.Exception, """ + pytest.raises(pytest.skip.Exception, """ py.test.importorskip("hello123", minversion="5.0") """) - except py.test.skip.Exception: + except pytest.skip.Exception: print(py.code.ExceptionInfo()) py.test.fail("spurious skip") diff --git a/testing/test_runner_xunit.py b/testing/test_runner_xunit.py index 3f23eefb4..8293246a1 100644 --- a/testing/test_runner_xunit.py +++ b/testing/test_runner_xunit.py @@ -152,9 +152,9 @@ def test_failing_setup_calls_teardown(testdir): def test_setup_that_skips_calledagain_and_teardown(testdir): p = testdir.makepyfile(""" - import py + import pytest def setup_module(mod): - py.test.skip("x") + pytest.skip("x") def test_function1(): pass def test_function2(): @@ -170,7 +170,7 @@ def test_setup_that_skips_calledagain_and_teardown(testdir): def test_setup_fails_again_on_all_tests(testdir): p = testdir.makepyfile(""" - import py + import pytest def setup_module(mod): raise ValueError(42) def test_function1(): @@ -188,7 +188,7 @@ def test_setup_fails_again_on_all_tests(testdir): def test_setup_funcarg_setup_not_called_if_outer_scope_fails(testdir): p = testdir.makepyfile(""" - import py + import pytest def setup_module(mod): raise ValueError(42) def pytest_funcarg__hello(request): diff --git a/testing/test_session.py b/testing/test_session.py index cde45b07d..90c950b7c 100644 --- a/testing/test_session.py +++ b/testing/test_session.py @@ -45,9 +45,9 @@ class SessionTests: def test_raises_output(self, testdir): reprec = testdir.inline_runsource(""" - import py + import pytest def test_raises_doesnt(): - py.test.raises(ValueError, int, "3") + pytest.raises(ValueError, int, "3") """) passed, skipped, failed = reprec.listoutcomes() assert len(failed) == 1 @@ -118,15 +118,15 @@ class SessionTests: def test_skip_file_by_conftest(self, testdir): testdir.makepyfile(conftest=""" - import py + import pytest def pytest_collect_file(): - py.test.skip("intentional") + pytest.skip("intentional") """, test_file=""" def test_one(): pass """) try: reprec = testdir.inline_run(testdir.tmpdir) - except py.test.skip.Exception: + except pytest.skip.Exception: py.test.fail("wrong skipped caught") reports = reprec.getreports("pytest_collectreport") assert len(reports) == 1 @@ -173,8 +173,8 @@ class TestNewSession(SessionTests): pass """, test_two=""" - import py - py.test.skip('xxx') + import pytest + pytest.skip('xxx') """, test_three="xxxdsadsadsadsa", __init__="" @@ -204,10 +204,10 @@ class TestNewSession(SessionTests): def test_plugin_specify(testdir): testdir.chdir() - config = py.test.raises(ImportError, """ + config = pytest.raises(ImportError, """ testdir.parseconfig("-p", "nqweotexistent") """) - #py.test.raises(ImportError, + #pytest.raises(ImportError, # "config.pluginmanager.do_configure(config)" #) diff --git a/testing/test_skipping.py b/testing/test_skipping.py index 6995323c2..34c64d6de 100644 --- a/testing/test_skipping.py +++ b/testing/test_skipping.py @@ -1,4 +1,4 @@ -import py +import pytest from _pytest.skipping import MarkEvaluator, folded_skips from _pytest.skipping import pytest_runtest_setup @@ -13,8 +13,8 @@ class TestEvaluator: def test_marked_no_args(self, testdir): item = testdir.getitem(""" - import py - @py.test.mark.xyz + import pytest + @pytest.mark.xyz def test_func(): pass """) @@ -27,8 +27,8 @@ class TestEvaluator: def test_marked_one_arg(self, testdir): item = testdir.getitem(""" - import py - @py.test.mark.xyz("hasattr(os, 'sep')") + import pytest + @pytest.mark.xyz("hasattr(os, 'sep')") def test_func(): pass """) @@ -40,8 +40,8 @@ class TestEvaluator: def test_marked_one_arg_with_reason(self, testdir): item = testdir.getitem(""" - import py - @py.test.mark.xyz("hasattr(os, 'sep')", attr=2, reason="hello world") + import pytest + @pytest.mark.xyz("hasattr(os, 'sep')", attr=2, reason="hello world") def test_func(): pass """) @@ -54,12 +54,12 @@ class TestEvaluator: def test_marked_one_arg_twice(self, testdir): lines = [ - '''@py.test.mark.skipif("not hasattr(os, 'murks')")''', - '''@py.test.mark.skipif("hasattr(os, 'murks')")''' + '''@pytest.mark.skipif("not hasattr(os, 'murks')")''', + '''@pytest.mark.skipif("hasattr(os, 'murks')")''' ] for i in range(0, 2): item = testdir.getitem(""" - import py + import pytest %s %s def test_func(): @@ -73,9 +73,9 @@ class TestEvaluator: def test_marked_one_arg_twice2(self, testdir): item = testdir.getitem(""" - import py - @py.test.mark.skipif("hasattr(os, 'murks')") - @py.test.mark.skipif("not hasattr(os, 'murks')") + import pytest + @pytest.mark.skipif("hasattr(os, 'murks')") + @pytest.mark.skipif("not hasattr(os, 'murks')") def test_func(): pass """) @@ -87,9 +87,9 @@ class TestEvaluator: def test_skipif_class(self, testdir): item, = testdir.getitems(""" - import py + import pytest class TestClass: - pytestmark = py.test.mark.skipif("config._hackxyz") + pytestmark = pytest.mark.skipif("config._hackxyz") def test_func(self): pass """) @@ -103,8 +103,8 @@ class TestEvaluator: class TestXFail: def test_xfail_simple(self, testdir): item = testdir.getitem(""" - import py - @py.test.mark.xfail + import pytest + @pytest.mark.xfail def test_func(): assert 0 """) @@ -117,8 +117,8 @@ class TestXFail: def test_xfail_xpassed(self, testdir): item = testdir.getitem(""" - import py - @py.test.mark.xfail + import pytest + @pytest.mark.xfail def test_func(): assert 1 """) @@ -131,8 +131,8 @@ class TestXFail: def test_xfail_run_anyway(self, testdir): testdir.makepyfile(""" - import py - @py.test.mark.xfail + import pytest + @pytest.mark.xfail def test_func(): assert 0 """) @@ -146,8 +146,8 @@ class TestXFail: def test_xfail_evalfalse_but_fails(self, testdir): item = testdir.getitem(""" - import py - @py.test.mark.xfail('False') + import pytest + @pytest.mark.xfail('False') def test_func(): assert 0 """) @@ -158,8 +158,8 @@ class TestXFail: def test_xfail_not_report_default(self, testdir): p = testdir.makepyfile(test_one=""" - import py - @py.test.mark.xfail + import pytest + @pytest.mark.xfail def test_this(): assert 0 """) @@ -170,14 +170,14 @@ class TestXFail: def test_xfail_not_run_xfail_reporting(self, testdir): p = testdir.makepyfile(test_one=""" - import py - @py.test.mark.xfail(run=False, reason="noway") + import pytest + @pytest.mark.xfail(run=False, reason="noway") def test_this(): assert 0 - @py.test.mark.xfail("True", run=False) + @pytest.mark.xfail("True", run=False) def test_this_true(): assert 0 - @py.test.mark.xfail("False", run=False, reason="huh") + @pytest.mark.xfail("False", run=False, reason="huh") def test_this_false(): assert 1 """) @@ -192,8 +192,8 @@ class TestXFail: def test_xfail_not_run_no_setup_run(self, testdir): p = testdir.makepyfile(test_one=""" - import py - @py.test.mark.xfail(run=False, reason="hello") + import pytest + @pytest.mark.xfail(run=False, reason="hello") def test_this(): assert 0 def setup_module(mod): @@ -208,8 +208,8 @@ class TestXFail: def test_xfail_xpass(self, testdir): p = testdir.makepyfile(test_one=""" - import py - @py.test.mark.xfail + import pytest + @pytest.mark.xfail def test_that(): assert 1 """) @@ -222,9 +222,9 @@ class TestXFail: def test_xfail_imperative(self, testdir): p = testdir.makepyfile(""" - import py + import pytest def test_this(): - py.test.xfail("hello") + pytest.xfail("hello") """) result = testdir.runpytest(p) result.stdout.fnmatch_lines([ @@ -238,14 +238,14 @@ class TestXFail: result = testdir.runpytest(p, "--runxfail") result.stdout.fnmatch_lines([ "*def test_this():*", - "*py.test.xfail*", + "*pytest.xfail*", ]) def test_xfail_imperative_in_setup_function(self, testdir): p = testdir.makepyfile(""" - import py + import pytest def setup_function(function): - py.test.xfail("hello") + pytest.xfail("hello") def test_this(): assert 0 @@ -262,14 +262,14 @@ class TestXFail: result = testdir.runpytest(p, "--runxfail") result.stdout.fnmatch_lines([ "*def setup_function(function):*", - "*py.test.xfail*", + "*pytest.xfail*", ]) def xtest_dynamic_xfail_set_during_setup(self, testdir): p = testdir.makepyfile(""" - import py + import pytest def setup_function(function): - py.test.mark.xfail(function) + pytest.mark.xfail(function) def test_this(): assert 0 def test_that(): @@ -283,9 +283,9 @@ class TestXFail: def test_dynamic_xfail_no_run(self, testdir): p = testdir.makepyfile(""" - import py + import pytest def pytest_funcarg__arg(request): - request.applymarker(py.test.mark.xfail(run=False)) + request.applymarker(pytest.mark.xfail(run=False)) def test_this(arg): assert 0 """) @@ -297,9 +297,9 @@ class TestXFail: def test_dynamic_xfail_set_during_funcarg_setup(self, testdir): p = testdir.makepyfile(""" - import py + import pytest def pytest_funcarg__arg(request): - request.applymarker(py.test.mark.xfail) + request.applymarker(pytest.mark.xfail) def test_this2(arg): assert 0 """) @@ -312,19 +312,19 @@ class TestXFail: class TestSkipif: def test_skipif_conditional(self, testdir): item = testdir.getitem(""" - import py - @py.test.mark.skipif("hasattr(os, 'sep')") + import pytest + @pytest.mark.skipif("hasattr(os, 'sep')") def test_func(): pass """) - x = py.test.raises(py.test.skip.Exception, "pytest_runtest_setup(item)") + x = pytest.raises(pytest.skip.Exception, "pytest_runtest_setup(item)") assert x.value.msg == "condition: hasattr(os, 'sep')" def test_skipif_reporting(self, testdir): p = testdir.makepyfile(""" - import py - @py.test.mark.skipif("hasattr(sys, 'platform')") + import pytest + @pytest.mark.skipif("hasattr(sys, 'platform')") def test_that(): assert 0 """) @@ -337,9 +337,9 @@ class TestSkipif: def test_skip_not_report_default(testdir): p = testdir.makepyfile(test_one=""" - import py + import pytest def test_this(): - py.test.skip("hello") + pytest.skip("hello") """) result = testdir.runpytest(p, '-v') result.stdout.fnmatch_lines([ @@ -350,10 +350,10 @@ def test_skip_not_report_default(testdir): def test_skipif_class(testdir): p = testdir.makepyfile(""" - import py + import pytest class TestClass: - pytestmark = py.test.mark.skipif("True") + pytestmark = pytest.mark.skipif("True") def test_that(self): assert 0 def test_though(self): @@ -407,9 +407,9 @@ def test_skipped_reasons_functional(testdir): doskip() """, conftest = """ - import py + import pytest def doskip(): - py.test.skip('test') + pytest.skip('test') """ ) result = testdir.runpytest('--report=skipped') @@ -422,17 +422,17 @@ def test_skipped_reasons_functional(testdir): def test_reportchars(testdir): testdir.makepyfile(""" - import py + import pytest def test_1(): assert 0 - @py.test.mark.xfail + @pytest.mark.xfail def test_2(): assert 0 - @py.test.mark.xfail + @pytest.mark.xfail def test_3(): pass def test_4(): - py.test.skip("four") + pytest.skip("four") """) result = testdir.runpytest("-rfxXs") result.stdout.fnmatch_lines([ diff --git a/testing/test_terminal.py b/testing/test_terminal.py index 5843e37d0..bce1d101c 100644 --- a/testing/test_terminal.py +++ b/testing/test_terminal.py @@ -41,11 +41,11 @@ def pytest_generate_tests(metafunc): class TestTerminal: def test_pass_skip_fail(self, testdir, option): p = testdir.makepyfile(""" - import py + import pytest def test_ok(): pass def test_skip(): - py.test.skip("xx") + pytest.skip("xx") def test_func(): assert 0 """) @@ -69,7 +69,7 @@ class TestTerminal: def test_internalerror(self, testdir, linecomp): modcol = testdir.getmodulecol("def test_one(): pass") rep = TerminalReporter(modcol.config, file=linecomp.stringio) - excinfo = py.test.raises(ValueError, "raise ValueError('hello')") + excinfo = pytest.raises(ValueError, "raise ValueError('hello')") rep.pytest_internalerror(excinfo.getrepr()) linecomp.assert_contains_lines([ "INTERNALERROR> *ValueError*hello*" @@ -136,7 +136,7 @@ class TestTerminal: def test_foobar(): assert 0 def test_spamegg(): - import py; py.test.skip('skip me please!') + import py; pytest.skip('skip me please!') def test_interrupt_me(): raise KeyboardInterrupt # simulating the user """) @@ -180,8 +180,8 @@ class TestCollectonly: def test_collectonly_skipped_module(self, testdir, linecomp): modcol = testdir.getmodulecol(configargs=['--collectonly'], source=""" - import py - py.test.skip("nomod") + import pytest + pytest.skip("nomod") """) rep = CollectonlyReporter(modcol.config, out=linecomp.stringio) modcol.config.pluginmanager.register(rep) @@ -335,13 +335,13 @@ class TestTerminalFunctional: def test_no_skip_summary_if_failure(self, testdir): testdir.makepyfile(""" - import py + import pytest def test_ok(): pass def test_fail(): assert 0 def test_skip(): - py.test.skip("dontshow") + pytest.skip("dontshow") """) result = testdir.runpytest() assert result.stdout.str().find("skip test summary") == -1 @@ -397,14 +397,14 @@ class TestTerminalFunctional: def test_verbose_reporting(self, testdir, pytestconfig): p1 = testdir.makepyfile(""" - import py + import pytest def test_fail(): raise ValueError() def test_pass(): pass class TestClass: def test_skip(self): - py.test.skip("hello") + pytest.skip("hello") def test_gen(): def check(x): assert x == 1 @@ -562,7 +562,7 @@ class TestGenericReporting: def test_tb_option(self, testdir, option): p = testdir.makepyfile(""" - import py + import pytest def g(): raise IndexError def test_func(): @@ -587,7 +587,7 @@ class TestGenericReporting: def test_tb_crashline(self, testdir, option): p = testdir.makepyfile(""" - import py + import pytest def g(): raise IndexError def test_func1(): @@ -620,7 +620,7 @@ def pytest_report_header(config): "*hello: info*", ]) -@py.test.mark.xfail("not hasattr(os, 'dup')") +@pytest.mark.xfail("not hasattr(os, 'dup')") def test_fdopen_kept_alive_issue124(testdir): testdir.makepyfile(""" import os, sys diff --git a/testing/test_tmpdir.py b/testing/test_tmpdir.py index 66ba5d1aa..9fe09f3f0 100644 --- a/testing/test_tmpdir.py +++ b/testing/test_tmpdir.py @@ -1,4 +1,4 @@ -import py +import py, pytest from _pytest.tmpdir import pytest_funcarg__tmpdir from _pytest.python import FuncargRequest diff --git a/testing/test_unittest.py b/testing/test_unittest.py index e3f06e737..852cb6098 100644 --- a/testing/test_unittest.py +++ b/testing/test_unittest.py @@ -1,4 +1,4 @@ -import py +import pytest def test_simple_unittest(testdir): testpath = testdir.makepyfile(""" @@ -73,8 +73,8 @@ def test_teardown(testdir): def test_module_level_pytestmark(testdir): testpath = testdir.makepyfile(""" import unittest - import py - pytestmark = py.test.mark.xfail + import pytest + pytestmark = pytest.mark.xfail class MyTestCase(unittest.TestCase): def test_func1(self): assert 0 @@ -85,7 +85,7 @@ def test_module_level_pytestmark(testdir): def test_class_setup(testdir): testpath = testdir.makepyfile(""" import unittest - import py + import pytest class MyTestCase(unittest.TestCase): x = 0 @classmethod