Changes for 3.0.1 release
This commit is contained in:
parent
3c866e7080
commit
49fc4e5e4c
|
@ -1,5 +1,5 @@
|
||||||
3.0.1.dev
|
3.0.1
|
||||||
=========
|
=====
|
||||||
|
|
||||||
* Fix regression when ``importorskip`` is used at module level (`#1822`_).
|
* Fix regression when ``importorskip`` is used at module level (`#1822`_).
|
||||||
Thanks `@jaraco`_ and `@The-Compiler`_ for the report and `@nicoddemus`_ for the PR.
|
Thanks `@jaraco`_ and `@The-Compiler`_ for the report and `@nicoddemus`_ for the PR.
|
||||||
|
@ -14,12 +14,6 @@
|
||||||
* Fix loader error when running ``pytest`` embedded in a zipfile.
|
* Fix loader error when running ``pytest`` embedded in a zipfile.
|
||||||
Thanks `@mbachry`_ for the PR.
|
Thanks `@mbachry`_ for the PR.
|
||||||
|
|
||||||
*
|
|
||||||
|
|
||||||
|
|
||||||
*
|
|
||||||
|
|
||||||
*
|
|
||||||
|
|
||||||
.. _@Kingdread: https://github.com/Kingdread
|
.. _@Kingdread: https://github.com/Kingdread
|
||||||
.. _@mbachry: https://github.com/mbachry
|
.. _@mbachry: https://github.com/mbachry
|
||||||
|
|
365
ISSUES.txt
365
ISSUES.txt
|
@ -1,365 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
recorder = monkeypatch.function(".......")
|
|
||||||
-------------------------------------------------------------
|
|
||||||
tags: nice feature
|
|
||||||
|
|
||||||
Like monkeypatch.replace but sets a mock-like call recorder:
|
|
||||||
|
|
||||||
recorder = monkeypatch.function("os.path.abspath")
|
|
||||||
recorder.set_return("/hello")
|
|
||||||
os.path.abspath("hello")
|
|
||||||
call, = recorder.calls
|
|
||||||
assert call.args.path == "hello"
|
|
||||||
assert call.returned == "/hello"
|
|
||||||
...
|
|
||||||
|
|
||||||
Unlike mock, "args.path" acts on the parsed auto-spec'ed ``os.path.abspath``
|
|
||||||
so it's independent from if the client side called "os.path.abspath(path=...)"
|
|
||||||
or "os.path.abspath('positional')".
|
|
||||||
|
|
||||||
|
|
||||||
refine parametrize API
|
|
||||||
-------------------------------------------------------------
|
|
||||||
tags: critical feature
|
|
||||||
|
|
||||||
extend metafunc.parametrize to directly support indirection, example:
|
|
||||||
|
|
||||||
def setupdb(request, config):
|
|
||||||
# setup "resource" based on test request and the values passed
|
|
||||||
# in to parametrize. setupfunc is called for each such value.
|
|
||||||
# you may use request.addfinalizer() or request.cached_setup ...
|
|
||||||
return dynamic_setup_database(val)
|
|
||||||
|
|
||||||
@pytest.mark.parametrize("db", ["pg", "mysql"], setupfunc=setupdb)
|
|
||||||
def test_heavy_functional_test(db):
|
|
||||||
...
|
|
||||||
|
|
||||||
There would be no need to write or explain funcarg factories and
|
|
||||||
their special __ syntax.
|
|
||||||
|
|
||||||
The examples and improvements should also show how to put the parametrize
|
|
||||||
decorator to a class, to a module or even to a directory. For the directory
|
|
||||||
part a conftest.py content like this::
|
|
||||||
|
|
||||||
pytestmark = [
|
|
||||||
@pytest.mark.parametrize_setup("db", ...),
|
|
||||||
]
|
|
||||||
|
|
||||||
probably makes sense in order to keep the declarative nature. This mirrors
|
|
||||||
the marker-mechanism with respect to a test module but puts it to a directory
|
|
||||||
scale.
|
|
||||||
|
|
||||||
When doing larger scoped parametrization it probably becomes necessary
|
|
||||||
to allow parametrization to be ignored if the according parameter is not
|
|
||||||
used (currently any parametrized argument that is not present in a function will cause a ValueError). Example:
|
|
||||||
|
|
||||||
@pytest.mark.parametrize("db", ..., mustmatch=False)
|
|
||||||
|
|
||||||
means to not raise an error but simply ignore the parametrization
|
|
||||||
if the signature of a decorated function does not match. XXX is it
|
|
||||||
not sufficient to always allow non-matches?
|
|
||||||
|
|
||||||
|
|
||||||
allow parametrized attributes on classes
|
|
||||||
--------------------------------------------------
|
|
||||||
|
|
||||||
tags: wish 2.4
|
|
||||||
|
|
||||||
example:
|
|
||||||
|
|
||||||
@pytest.mark.parametrize_attr("db", setupfunc, [1,2,3], scope="class")
|
|
||||||
@pytest.mark.parametrize_attr("tmp", setupfunc, scope="...")
|
|
||||||
class TestMe:
|
|
||||||
def test_hello(self):
|
|
||||||
access self.db ...
|
|
||||||
|
|
||||||
this would run the test_hello() function three times with three
|
|
||||||
different values for self.db. This could also work with unittest/nose
|
|
||||||
style tests, i.e. it leverages existing test suites without needing
|
|
||||||
to rewrite them. Together with the previously mentioned setup_test()
|
|
||||||
maybe the setupfunc could be omitted?
|
|
||||||
|
|
||||||
optimizations
|
|
||||||
---------------------------------------------------------------
|
|
||||||
tags: 2.4 core
|
|
||||||
|
|
||||||
- look at ihook optimization such that all lookups for
|
|
||||||
hooks relating to the same fspath are cached.
|
|
||||||
|
|
||||||
fix start/finish partial finailization problem
|
|
||||||
---------------------------------------------------------------
|
|
||||||
tags: bug core
|
|
||||||
|
|
||||||
if a configure/runtest_setup/sessionstart/... hook invocation partially
|
|
||||||
fails the sessionfinishes is not called. Each hook implementation
|
|
||||||
should better be repsonsible for registering a cleanup/finalizer
|
|
||||||
appropriately to avoid this issue. Moreover/Alternatively, we could
|
|
||||||
record which implementations of a hook succeeded and only call their
|
|
||||||
teardown.
|
|
||||||
|
|
||||||
|
|
||||||
relax requirement to have tests/testing contain an __init__
|
|
||||||
----------------------------------------------------------------
|
|
||||||
tags: feature
|
|
||||||
bb: http://bitbucket.org/hpk42/py-trunk/issue/64
|
|
||||||
|
|
||||||
A local test run of a "tests" directory may work
|
|
||||||
but a remote one fail because the tests directory
|
|
||||||
does not contain an "__init__.py". Either give
|
|
||||||
an error or make it work without the __init__.py
|
|
||||||
i.e. port the nose-logic of unloading a test module.
|
|
||||||
|
|
||||||
customize test function collection
|
|
||||||
-------------------------------------------------------
|
|
||||||
tags: feature
|
|
||||||
|
|
||||||
- introduce pytest.mark.nocollect for not considering a function for
|
|
||||||
test collection at all. maybe also introduce a pytest.mark.test to
|
|
||||||
explicitly mark a function to become a tested one. Lookup JUnit ways
|
|
||||||
of tagging tests.
|
|
||||||
|
|
||||||
introduce pytest.mark.importorskip
|
|
||||||
-------------------------------------------------------
|
|
||||||
tags: feature
|
|
||||||
|
|
||||||
in addition to the imperative pytest.importorskip also introduce
|
|
||||||
a pytest.mark.importorskip so that the test count is more correct.
|
|
||||||
|
|
||||||
|
|
||||||
introduce pytest.mark.platform
|
|
||||||
-------------------------------------------------------
|
|
||||||
tags: feature
|
|
||||||
|
|
||||||
Introduce nice-to-spell platform-skipping, examples:
|
|
||||||
|
|
||||||
@pytest.mark.platform("python3")
|
|
||||||
@pytest.mark.platform("not python3")
|
|
||||||
@pytest.mark.platform("win32 and not python3")
|
|
||||||
@pytest.mark.platform("darwin")
|
|
||||||
@pytest.mark.platform("not (jython and win32)")
|
|
||||||
@pytest.mark.platform("not (jython and win32)", xfail=True)
|
|
||||||
|
|
||||||
etc. Idea is to allow Python expressions which can operate
|
|
||||||
on common spellings for operating systems and python
|
|
||||||
interpreter versions.
|
|
||||||
|
|
||||||
pytest.mark.xfail signature change
|
|
||||||
-------------------------------------------------------
|
|
||||||
tags: feature
|
|
||||||
|
|
||||||
change to pytest.mark.xfail(reason, (optional)condition)
|
|
||||||
to better implement the word meaning. It also signals
|
|
||||||
better that we always have some kind of an implementation
|
|
||||||
reason that can be formualated.
|
|
||||||
Compatibility? how to introduce a new name/keep compat?
|
|
||||||
|
|
||||||
allow to non-intrusively apply skipfs/xfail/marks
|
|
||||||
---------------------------------------------------
|
|
||||||
tags: feature
|
|
||||||
|
|
||||||
use case: mark a module or directory structures
|
|
||||||
to be skipped on certain platforms (i.e. no import
|
|
||||||
attempt will be made).
|
|
||||||
|
|
||||||
consider introducing a hook/mechanism that allows to apply marks
|
|
||||||
from conftests or plugins. (See extended parametrization)
|
|
||||||
|
|
||||||
|
|
||||||
explicit referencing of conftest.py files
|
|
||||||
-----------------------------------------
|
|
||||||
tags: feature
|
|
||||||
|
|
||||||
allow to name conftest.py files (in sub directories) that should
|
|
||||||
be imported early, as to include command line options.
|
|
||||||
|
|
||||||
improve central pytest ini file
|
|
||||||
-------------------------------
|
|
||||||
tags: feature
|
|
||||||
|
|
||||||
introduce more declarative configuration options:
|
|
||||||
- (to-be-collected test directories)
|
|
||||||
- required plugins
|
|
||||||
- test func/class/file matching patterns
|
|
||||||
- skip/xfail (non-intrusive)
|
|
||||||
- pytest.ini and tox.ini and setup.cfg configuration in the same file
|
|
||||||
|
|
||||||
new documentation
|
|
||||||
----------------------------------
|
|
||||||
tags: feature
|
|
||||||
|
|
||||||
- logo pytest
|
|
||||||
- examples for unittest or functional testing
|
|
||||||
- resource management for functional testing
|
|
||||||
- patterns: page object
|
|
||||||
|
|
||||||
have imported module mismatch honour relative paths
|
|
||||||
--------------------------------------------------------
|
|
||||||
tags: bug
|
|
||||||
|
|
||||||
With 1.1.1 pytest fails at least on windows if an import
|
|
||||||
is relative and compared against an absolute conftest.py
|
|
||||||
path. Normalize.
|
|
||||||
|
|
||||||
consider globals: pytest.ensuretemp and config
|
|
||||||
--------------------------------------------------------------
|
|
||||||
tags: experimental-wish
|
|
||||||
|
|
||||||
consider deprecating pytest.ensuretemp and pytest.config
|
|
||||||
to further reduce pytest globality. Also consider
|
|
||||||
having pytest.config and ensuretemp coming from
|
|
||||||
a plugin rather than being there from the start.
|
|
||||||
|
|
||||||
|
|
||||||
consider pytest_addsyspath hook
|
|
||||||
-----------------------------------------
|
|
||||||
tags: wish
|
|
||||||
|
|
||||||
pytest could call a new pytest_addsyspath() in order to systematically
|
|
||||||
allow manipulation of sys.path and to inhibit it via --no-addsyspath
|
|
||||||
in order to more easily run against installed packages.
|
|
||||||
|
|
||||||
Alternatively it could also be done via the config object
|
|
||||||
and pytest_configure.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
deprecate global pytest.config usage
|
|
||||||
----------------------------------------------------------------
|
|
||||||
tags: feature
|
|
||||||
|
|
||||||
pytest.ensuretemp and pytest.config are probably the last
|
|
||||||
objects containing global state. Often using them is not
|
|
||||||
necessary. This is about trying to get rid of them, i.e.
|
|
||||||
deprecating them and checking with PyPy's usages as well
|
|
||||||
as others.
|
|
||||||
|
|
||||||
remove deprecated bits in collect.py
|
|
||||||
-------------------------------------------------------------------
|
|
||||||
tags: feature
|
|
||||||
|
|
||||||
In an effort to further simplify code, review and remove deprecated bits
|
|
||||||
in collect.py. Probably good:
|
|
||||||
- inline consider_file/dir methods, no need to have them
|
|
||||||
subclass-overridable because of hooks
|
|
||||||
|
|
||||||
implement fslayout decorator
|
|
||||||
---------------------------------
|
|
||||||
tags: feature
|
|
||||||
|
|
||||||
Improve the way how tests can work with pre-made examples,
|
|
||||||
keeping the layout close to the test function:
|
|
||||||
|
|
||||||
@pytest.mark.fslayout("""
|
|
||||||
conftest.py:
|
|
||||||
# empty
|
|
||||||
tests/
|
|
||||||
test_%(NAME)s: # becomes test_run1.py
|
|
||||||
def test_function(self):
|
|
||||||
pass
|
|
||||||
""")
|
|
||||||
def test_run(pytester, fslayout):
|
|
||||||
p = fslayout.findone("test_*.py")
|
|
||||||
result = pytester.runpytest(p)
|
|
||||||
assert result.ret == 0
|
|
||||||
assert result.passed == 1
|
|
||||||
|
|
||||||
Another idea is to allow to define a full scenario including the run
|
|
||||||
in one content string::
|
|
||||||
|
|
||||||
runscenario("""
|
|
||||||
test_{TESTNAME}.py:
|
|
||||||
import pytest
|
|
||||||
@pytest.mark.xfail
|
|
||||||
def test_that_fails():
|
|
||||||
assert 0
|
|
||||||
|
|
||||||
@pytest.mark.skipif("True")
|
|
||||||
def test_hello():
|
|
||||||
pass
|
|
||||||
|
|
||||||
conftest.py:
|
|
||||||
import pytest
|
|
||||||
def pytest_runsetup_setup(item):
|
|
||||||
pytest.skip("abc")
|
|
||||||
|
|
||||||
runpytest -rsxX
|
|
||||||
*SKIP*{TESTNAME}*
|
|
||||||
*1 skipped*
|
|
||||||
""")
|
|
||||||
|
|
||||||
This could be run with at least three different ways to invoke pytest:
|
|
||||||
through the shell, through "python -m pytest" and inlined. As inlined
|
|
||||||
would be the fastest it could be run first (or "--fast" mode).
|
|
||||||
|
|
||||||
|
|
||||||
Create isolate plugin
|
|
||||||
---------------------
|
|
||||||
tags: feature
|
|
||||||
|
|
||||||
The idea is that you can e.g. import modules in a test and afterwards
|
|
||||||
sys.modules, sys.meta_path etc would be reverted. It can go further
|
|
||||||
then just importing however, e.g. current working directory, file
|
|
||||||
descriptors, ...
|
|
||||||
|
|
||||||
This would probably be done by marking::
|
|
||||||
|
|
||||||
@pytest.mark.isolate(importing=True, cwd=True, fds=False)
|
|
||||||
def test_foo():
|
|
||||||
...
|
|
||||||
|
|
||||||
With the possibility of doing this globally in an ini-file.
|
|
||||||
|
|
||||||
|
|
||||||
fnmatch for test names
|
|
||||||
----------------------
|
|
||||||
tags: feature-wish
|
|
||||||
|
|
||||||
various testsuites use suffixes instead of prefixes for test classes
|
|
||||||
also it lends itself to bdd style test names::
|
|
||||||
|
|
||||||
class UserBehaviour:
|
|
||||||
def anonymous_should_not_have_inbox(user):
|
|
||||||
...
|
|
||||||
def registred_should_have_inbox(user):
|
|
||||||
..
|
|
||||||
|
|
||||||
using the following in pytest.ini::
|
|
||||||
|
|
||||||
[pytest]
|
|
||||||
python_classes = Test *Behaviour *Test
|
|
||||||
python_functions = test *_should_*
|
|
||||||
|
|
||||||
|
|
||||||
mechanism for running named parts of tests with different reporting behaviour
|
|
||||||
------------------------------------------------------------------------------
|
|
||||||
tags: feature-wish-incomplete
|
|
||||||
|
|
||||||
a few use-cases come to mind:
|
|
||||||
|
|
||||||
* fail assertions and record that without stopping a complete test
|
|
||||||
|
|
||||||
* this is in particular hepfull if a small bit of a test is known to fail/xfail::
|
|
||||||
|
|
||||||
def test_fun():
|
|
||||||
with pytest.section('fdcheck, marks=pytest.mark.xfail_if(...)):
|
|
||||||
breaks_on_windows()
|
|
||||||
|
|
||||||
* divide functional/acceptance tests into sections
|
|
||||||
* provide a different mechanism for generators, maybe something like::
|
|
||||||
|
|
||||||
def pytest_runtest_call(item)
|
|
||||||
if not generator:
|
|
||||||
...
|
|
||||||
prepare_check = GeneratorCheckprepare()
|
|
||||||
|
|
||||||
gen = item.obj(**fixtures)
|
|
||||||
for check in gen
|
|
||||||
id, call = prepare_check(check)
|
|
||||||
# bubble should only prevent exception propagation after a failure
|
|
||||||
# the whole test should still fail
|
|
||||||
# there might be need for a lower level api and taking custom markers into account
|
|
||||||
with pytest.section(id, bubble=False):
|
|
||||||
call()
|
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@ include AUTHORS
|
||||||
|
|
||||||
include README.rst
|
include README.rst
|
||||||
include CONTRIBUTING.rst
|
include CONTRIBUTING.rst
|
||||||
|
include HOWTORELEASE.rst
|
||||||
|
|
||||||
include tox.ini
|
include tox.ini
|
||||||
include setup.py
|
include setup.py
|
||||||
|
@ -29,6 +30,3 @@ recursive-exclude * *.pyc *.pyo
|
||||||
exclude appveyor/install.ps1
|
exclude appveyor/install.ps1
|
||||||
exclude appveyor.yml
|
exclude appveyor.yml
|
||||||
exclude appveyor
|
exclude appveyor
|
||||||
|
|
||||||
exclude ISSUES.txt
|
|
||||||
exclude HOWTORELEASE.rst
|
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
#
|
#
|
||||||
__version__ = '3.0.1.dev'
|
__version__ = '3.0.1'
|
||||||
|
|
|
@ -7,6 +7,7 @@ Release announcements
|
||||||
|
|
||||||
|
|
||||||
sprint2016
|
sprint2016
|
||||||
|
release-3.0.1
|
||||||
release-3.0.0
|
release-3.0.0
|
||||||
release-2.9.2
|
release-2.9.2
|
||||||
release-2.9.1
|
release-2.9.1
|
||||||
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
pytest-3.0.1
|
||||||
|
============
|
||||||
|
|
||||||
|
pytest 3.0.1 has just been released to PyPI.
|
||||||
|
|
||||||
|
This release fixes some regressions reported in version 3.0.0, being a
|
||||||
|
drop-in replacement. To upgrade:
|
||||||
|
|
||||||
|
pip install --upgrade pytest
|
||||||
|
|
||||||
|
The changelog is available at http://doc.pytest.org/en/latest/changelog.html.
|
||||||
|
|
||||||
|
Thanks to all who contributed to this release, among them:
|
||||||
|
|
||||||
|
Adam Chainz
|
||||||
|
Andrew Svetlov
|
||||||
|
Bruno Oliveira
|
||||||
|
Daniel Hahler
|
||||||
|
Dmitry Dygalo
|
||||||
|
Florian Bruhin
|
||||||
|
Marcin Bachry
|
||||||
|
Ronny Pfannschmidt
|
||||||
|
matthiasha
|
||||||
|
|
||||||
|
Happy testing,
|
||||||
|
The py.test Development Team
|
|
@ -26,7 +26,7 @@ you will see the return value of the function call::
|
||||||
|
|
||||||
$ pytest test_assert1.py
|
$ pytest test_assert1.py
|
||||||
======= test session starts ========
|
======= test session starts ========
|
||||||
platform linux -- Python 3.5.2, pytest-3.0.0, py-1.4.31, pluggy-0.3.1
|
platform linux -- Python 3.5.2, pytest-3.0.1, py-1.4.31, pluggy-0.3.1
|
||||||
rootdir: $REGENDOC_TMPDIR, inifile:
|
rootdir: $REGENDOC_TMPDIR, inifile:
|
||||||
collected 1 items
|
collected 1 items
|
||||||
|
|
||||||
|
@ -170,7 +170,7 @@ if you run this module::
|
||||||
|
|
||||||
$ pytest test_assert2.py
|
$ pytest test_assert2.py
|
||||||
======= test session starts ========
|
======= test session starts ========
|
||||||
platform linux -- Python 3.5.2, pytest-3.0.0, py-1.4.31, pluggy-0.3.1
|
platform linux -- Python 3.5.2, pytest-3.0.1, py-1.4.31, pluggy-0.3.1
|
||||||
rootdir: $REGENDOC_TMPDIR, inifile:
|
rootdir: $REGENDOC_TMPDIR, inifile:
|
||||||
collected 1 items
|
collected 1 items
|
||||||
|
|
||||||
|
|
|
@ -80,7 +80,7 @@ If you then run it with ``--lf``::
|
||||||
|
|
||||||
$ pytest --lf
|
$ pytest --lf
|
||||||
======= test session starts ========
|
======= test session starts ========
|
||||||
platform linux -- Python 3.5.2, pytest-3.0.0, py-1.4.31, pluggy-0.3.1
|
platform linux -- Python 3.5.2, pytest-3.0.1, py-1.4.31, pluggy-0.3.1
|
||||||
run-last-failure: rerun last 2 failures
|
run-last-failure: rerun last 2 failures
|
||||||
rootdir: $REGENDOC_TMPDIR, inifile:
|
rootdir: $REGENDOC_TMPDIR, inifile:
|
||||||
collected 50 items
|
collected 50 items
|
||||||
|
@ -122,7 +122,7 @@ of ``FF`` and dots)::
|
||||||
|
|
||||||
$ pytest --ff
|
$ pytest --ff
|
||||||
======= test session starts ========
|
======= test session starts ========
|
||||||
platform linux -- Python 3.5.2, pytest-3.0.0, py-1.4.31, pluggy-0.3.1
|
platform linux -- Python 3.5.2, pytest-3.0.1, py-1.4.31, pluggy-0.3.1
|
||||||
run-last-failure: rerun last 2 failures first
|
run-last-failure: rerun last 2 failures first
|
||||||
rootdir: $REGENDOC_TMPDIR, inifile:
|
rootdir: $REGENDOC_TMPDIR, inifile:
|
||||||
collected 50 items
|
collected 50 items
|
||||||
|
@ -227,7 +227,7 @@ You can always peek at the content of the cache using the
|
||||||
|
|
||||||
$ py.test --cache-show
|
$ py.test --cache-show
|
||||||
======= test session starts ========
|
======= test session starts ========
|
||||||
platform linux -- Python 3.5.2, pytest-3.0.0, py-1.4.31, pluggy-0.3.1
|
platform linux -- Python 3.5.2, pytest-3.0.1, py-1.4.31, pluggy-0.3.1
|
||||||
rootdir: $REGENDOC_TMPDIR, inifile:
|
rootdir: $REGENDOC_TMPDIR, inifile:
|
||||||
cachedir: $REGENDOC_TMPDIR/.cache
|
cachedir: $REGENDOC_TMPDIR/.cache
|
||||||
------------------------------- cache values -------------------------------
|
------------------------------- cache values -------------------------------
|
||||||
|
|
|
@ -64,7 +64,7 @@ of the failing function and hide the other one::
|
||||||
|
|
||||||
$ pytest
|
$ pytest
|
||||||
======= test session starts ========
|
======= test session starts ========
|
||||||
platform linux -- Python 3.5.2, pytest-3.0.0, py-1.4.31, pluggy-0.3.1
|
platform linux -- Python 3.5.2, pytest-3.0.1, py-1.4.31, pluggy-0.3.1
|
||||||
rootdir: $REGENDOC_TMPDIR, inifile:
|
rootdir: $REGENDOC_TMPDIR, inifile:
|
||||||
collected 2 items
|
collected 2 items
|
||||||
|
|
||||||
|
|
|
@ -48,7 +48,7 @@ then you can just invoke ``pytest`` without command line options::
|
||||||
|
|
||||||
$ pytest
|
$ pytest
|
||||||
======= test session starts ========
|
======= test session starts ========
|
||||||
platform linux -- Python 3.5.2, pytest-3.0.0, py-1.4.31, pluggy-0.3.1
|
platform linux -- Python 3.5.2, pytest-3.0.1, py-1.4.31, pluggy-0.3.1
|
||||||
rootdir: $REGENDOC_TMPDIR, inifile: pytest.ini
|
rootdir: $REGENDOC_TMPDIR, inifile: pytest.ini
|
||||||
collected 1 items
|
collected 1 items
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,7 @@ You can then restrict a test run to only run tests marked with ``webtest``::
|
||||||
|
|
||||||
$ pytest -v -m webtest
|
$ pytest -v -m webtest
|
||||||
======= test session starts ========
|
======= test session starts ========
|
||||||
platform linux -- Python 3.5.2, pytest-3.0.0, py-1.4.31, pluggy-0.3.1 -- $PYTHON_PREFIX/bin/python3.5
|
platform linux -- Python 3.5.2, pytest-3.0.1, py-1.4.31, pluggy-0.3.1 -- $PYTHON_PREFIX/bin/python3.5
|
||||||
cachedir: .cache
|
cachedir: .cache
|
||||||
rootdir: $REGENDOC_TMPDIR, inifile:
|
rootdir: $REGENDOC_TMPDIR, inifile:
|
||||||
collecting ... collected 4 items
|
collecting ... collected 4 items
|
||||||
|
@ -45,7 +45,7 @@ Or the inverse, running all tests except the webtest ones::
|
||||||
|
|
||||||
$ pytest -v -m "not webtest"
|
$ pytest -v -m "not webtest"
|
||||||
======= test session starts ========
|
======= test session starts ========
|
||||||
platform linux -- Python 3.5.2, pytest-3.0.0, py-1.4.31, pluggy-0.3.1 -- $PYTHON_PREFIX/bin/python3.5
|
platform linux -- Python 3.5.2, pytest-3.0.1, py-1.4.31, pluggy-0.3.1 -- $PYTHON_PREFIX/bin/python3.5
|
||||||
cachedir: .cache
|
cachedir: .cache
|
||||||
rootdir: $REGENDOC_TMPDIR, inifile:
|
rootdir: $REGENDOC_TMPDIR, inifile:
|
||||||
collecting ... collected 4 items
|
collecting ... collected 4 items
|
||||||
|
@ -66,7 +66,7 @@ tests based on their module, class, method, or function name::
|
||||||
|
|
||||||
$ pytest -v test_server.py::TestClass::test_method
|
$ pytest -v test_server.py::TestClass::test_method
|
||||||
======= test session starts ========
|
======= test session starts ========
|
||||||
platform linux -- Python 3.5.2, pytest-3.0.0, py-1.4.31, pluggy-0.3.1 -- $PYTHON_PREFIX/bin/python3.5
|
platform linux -- Python 3.5.2, pytest-3.0.1, py-1.4.31, pluggy-0.3.1 -- $PYTHON_PREFIX/bin/python3.5
|
||||||
cachedir: .cache
|
cachedir: .cache
|
||||||
rootdir: $REGENDOC_TMPDIR, inifile:
|
rootdir: $REGENDOC_TMPDIR, inifile:
|
||||||
collecting ... collected 5 items
|
collecting ... collected 5 items
|
||||||
|
@ -79,7 +79,7 @@ You can also select on the class::
|
||||||
|
|
||||||
$ pytest -v test_server.py::TestClass
|
$ pytest -v test_server.py::TestClass
|
||||||
======= test session starts ========
|
======= test session starts ========
|
||||||
platform linux -- Python 3.5.2, pytest-3.0.0, py-1.4.31, pluggy-0.3.1 -- $PYTHON_PREFIX/bin/python3.5
|
platform linux -- Python 3.5.2, pytest-3.0.1, py-1.4.31, pluggy-0.3.1 -- $PYTHON_PREFIX/bin/python3.5
|
||||||
cachedir: .cache
|
cachedir: .cache
|
||||||
rootdir: $REGENDOC_TMPDIR, inifile:
|
rootdir: $REGENDOC_TMPDIR, inifile:
|
||||||
collecting ... collected 4 items
|
collecting ... collected 4 items
|
||||||
|
@ -92,7 +92,7 @@ Or select multiple nodes::
|
||||||
|
|
||||||
$ pytest -v test_server.py::TestClass test_server.py::test_send_http
|
$ pytest -v test_server.py::TestClass test_server.py::test_send_http
|
||||||
======= test session starts ========
|
======= test session starts ========
|
||||||
platform linux -- Python 3.5.2, pytest-3.0.0, py-1.4.31, pluggy-0.3.1 -- $PYTHON_PREFIX/bin/python3.5
|
platform linux -- Python 3.5.2, pytest-3.0.1, py-1.4.31, pluggy-0.3.1 -- $PYTHON_PREFIX/bin/python3.5
|
||||||
cachedir: .cache
|
cachedir: .cache
|
||||||
rootdir: $REGENDOC_TMPDIR, inifile:
|
rootdir: $REGENDOC_TMPDIR, inifile:
|
||||||
collecting ... collected 8 items
|
collecting ... collected 8 items
|
||||||
|
@ -130,7 +130,7 @@ select tests based on their names::
|
||||||
|
|
||||||
$ pytest -v -k http # running with the above defined example module
|
$ pytest -v -k http # running with the above defined example module
|
||||||
======= test session starts ========
|
======= test session starts ========
|
||||||
platform linux -- Python 3.5.2, pytest-3.0.0, py-1.4.31, pluggy-0.3.1 -- $PYTHON_PREFIX/bin/python3.5
|
platform linux -- Python 3.5.2, pytest-3.0.1, py-1.4.31, pluggy-0.3.1 -- $PYTHON_PREFIX/bin/python3.5
|
||||||
cachedir: .cache
|
cachedir: .cache
|
||||||
rootdir: $REGENDOC_TMPDIR, inifile:
|
rootdir: $REGENDOC_TMPDIR, inifile:
|
||||||
collecting ... collected 4 items
|
collecting ... collected 4 items
|
||||||
|
@ -144,7 +144,7 @@ And you can also run all tests except the ones that match the keyword::
|
||||||
|
|
||||||
$ pytest -k "not send_http" -v
|
$ pytest -k "not send_http" -v
|
||||||
======= test session starts ========
|
======= test session starts ========
|
||||||
platform linux -- Python 3.5.2, pytest-3.0.0, py-1.4.31, pluggy-0.3.1 -- $PYTHON_PREFIX/bin/python3.5
|
platform linux -- Python 3.5.2, pytest-3.0.1, py-1.4.31, pluggy-0.3.1 -- $PYTHON_PREFIX/bin/python3.5
|
||||||
cachedir: .cache
|
cachedir: .cache
|
||||||
rootdir: $REGENDOC_TMPDIR, inifile:
|
rootdir: $REGENDOC_TMPDIR, inifile:
|
||||||
collecting ... collected 4 items
|
collecting ... collected 4 items
|
||||||
|
@ -160,7 +160,7 @@ Or to select "http" and "quick" tests::
|
||||||
|
|
||||||
$ pytest -k "http or quick" -v
|
$ pytest -k "http or quick" -v
|
||||||
======= test session starts ========
|
======= test session starts ========
|
||||||
platform linux -- Python 3.5.2, pytest-3.0.0, py-1.4.31, pluggy-0.3.1 -- $PYTHON_PREFIX/bin/python3.5
|
platform linux -- Python 3.5.2, pytest-3.0.1, py-1.4.31, pluggy-0.3.1 -- $PYTHON_PREFIX/bin/python3.5
|
||||||
cachedir: .cache
|
cachedir: .cache
|
||||||
rootdir: $REGENDOC_TMPDIR, inifile:
|
rootdir: $REGENDOC_TMPDIR, inifile:
|
||||||
collecting ... collected 4 items
|
collecting ... collected 4 items
|
||||||
|
@ -352,7 +352,7 @@ the test needs::
|
||||||
|
|
||||||
$ pytest -E stage2
|
$ pytest -E stage2
|
||||||
======= test session starts ========
|
======= test session starts ========
|
||||||
platform linux -- Python 3.5.2, pytest-3.0.0, py-1.4.31, pluggy-0.3.1
|
platform linux -- Python 3.5.2, pytest-3.0.1, py-1.4.31, pluggy-0.3.1
|
||||||
rootdir: $REGENDOC_TMPDIR, inifile:
|
rootdir: $REGENDOC_TMPDIR, inifile:
|
||||||
collected 1 items
|
collected 1 items
|
||||||
|
|
||||||
|
@ -364,7 +364,7 @@ and here is one that specifies exactly the environment needed::
|
||||||
|
|
||||||
$ pytest -E stage1
|
$ pytest -E stage1
|
||||||
======= test session starts ========
|
======= test session starts ========
|
||||||
platform linux -- Python 3.5.2, pytest-3.0.0, py-1.4.31, pluggy-0.3.1
|
platform linux -- Python 3.5.2, pytest-3.0.1, py-1.4.31, pluggy-0.3.1
|
||||||
rootdir: $REGENDOC_TMPDIR, inifile:
|
rootdir: $REGENDOC_TMPDIR, inifile:
|
||||||
collected 1 items
|
collected 1 items
|
||||||
|
|
||||||
|
@ -485,7 +485,7 @@ then you will see two test skipped and two executed tests as expected::
|
||||||
|
|
||||||
$ pytest -rs # this option reports skip reasons
|
$ pytest -rs # this option reports skip reasons
|
||||||
======= test session starts ========
|
======= test session starts ========
|
||||||
platform linux -- Python 3.5.2, pytest-3.0.0, py-1.4.31, pluggy-0.3.1
|
platform linux -- Python 3.5.2, pytest-3.0.1, py-1.4.31, pluggy-0.3.1
|
||||||
rootdir: $REGENDOC_TMPDIR, inifile:
|
rootdir: $REGENDOC_TMPDIR, inifile:
|
||||||
collected 4 items
|
collected 4 items
|
||||||
|
|
||||||
|
@ -499,7 +499,7 @@ Note that if you specify a platform via the marker-command line option like this
|
||||||
|
|
||||||
$ pytest -m linux2
|
$ pytest -m linux2
|
||||||
======= test session starts ========
|
======= test session starts ========
|
||||||
platform linux -- Python 3.5.2, pytest-3.0.0, py-1.4.31, pluggy-0.3.1
|
platform linux -- Python 3.5.2, pytest-3.0.1, py-1.4.31, pluggy-0.3.1
|
||||||
rootdir: $REGENDOC_TMPDIR, inifile:
|
rootdir: $REGENDOC_TMPDIR, inifile:
|
||||||
collected 4 items
|
collected 4 items
|
||||||
|
|
||||||
|
@ -551,7 +551,7 @@ We can now use the ``-m option`` to select one set::
|
||||||
|
|
||||||
$ pytest -m interface --tb=short
|
$ pytest -m interface --tb=short
|
||||||
======= test session starts ========
|
======= test session starts ========
|
||||||
platform linux -- Python 3.5.2, pytest-3.0.0, py-1.4.31, pluggy-0.3.1
|
platform linux -- Python 3.5.2, pytest-3.0.1, py-1.4.31, pluggy-0.3.1
|
||||||
rootdir: $REGENDOC_TMPDIR, inifile:
|
rootdir: $REGENDOC_TMPDIR, inifile:
|
||||||
collected 4 items
|
collected 4 items
|
||||||
|
|
||||||
|
@ -573,7 +573,7 @@ or to select both "event" and "interface" tests::
|
||||||
|
|
||||||
$ pytest -m "interface or event" --tb=short
|
$ pytest -m "interface or event" --tb=short
|
||||||
======= test session starts ========
|
======= test session starts ========
|
||||||
platform linux -- Python 3.5.2, pytest-3.0.0, py-1.4.31, pluggy-0.3.1
|
platform linux -- Python 3.5.2, pytest-3.0.1, py-1.4.31, pluggy-0.3.1
|
||||||
rootdir: $REGENDOC_TMPDIR, inifile:
|
rootdir: $REGENDOC_TMPDIR, inifile:
|
||||||
collected 4 items
|
collected 4 items
|
||||||
|
|
||||||
|
|
|
@ -27,7 +27,7 @@ now execute the test specification::
|
||||||
|
|
||||||
nonpython $ pytest test_simple.yml
|
nonpython $ pytest test_simple.yml
|
||||||
======= test session starts ========
|
======= test session starts ========
|
||||||
platform linux -- Python 3.5.2, pytest-3.0.0, py-1.4.31, pluggy-0.3.1
|
platform linux -- Python 3.5.2, pytest-3.0.1, py-1.4.31, pluggy-0.3.1
|
||||||
rootdir: $REGENDOC_TMPDIR/nonpython, inifile:
|
rootdir: $REGENDOC_TMPDIR/nonpython, inifile:
|
||||||
collected 2 items
|
collected 2 items
|
||||||
|
|
||||||
|
@ -59,7 +59,7 @@ consulted when reporting in ``verbose`` mode::
|
||||||
|
|
||||||
nonpython $ pytest -v
|
nonpython $ pytest -v
|
||||||
======= test session starts ========
|
======= test session starts ========
|
||||||
platform linux -- Python 3.5.2, pytest-3.0.0, py-1.4.31, pluggy-0.3.1 -- $PYTHON_PREFIX/bin/python3.5
|
platform linux -- Python 3.5.2, pytest-3.0.1, py-1.4.31, pluggy-0.3.1 -- $PYTHON_PREFIX/bin/python3.5
|
||||||
cachedir: .cache
|
cachedir: .cache
|
||||||
rootdir: $REGENDOC_TMPDIR/nonpython, inifile:
|
rootdir: $REGENDOC_TMPDIR/nonpython, inifile:
|
||||||
collecting ... collected 2 items
|
collecting ... collected 2 items
|
||||||
|
@ -81,7 +81,7 @@ interesting to just look at the collection tree::
|
||||||
|
|
||||||
nonpython $ pytest --collect-only
|
nonpython $ pytest --collect-only
|
||||||
======= test session starts ========
|
======= test session starts ========
|
||||||
platform linux -- Python 3.5.2, pytest-3.0.0, py-1.4.31, pluggy-0.3.1
|
platform linux -- Python 3.5.2, pytest-3.0.1, py-1.4.31, pluggy-0.3.1
|
||||||
rootdir: $REGENDOC_TMPDIR/nonpython, inifile:
|
rootdir: $REGENDOC_TMPDIR/nonpython, inifile:
|
||||||
collected 2 items
|
collected 2 items
|
||||||
<YamlFile 'test_simple.yml'>
|
<YamlFile 'test_simple.yml'>
|
||||||
|
|
|
@ -130,7 +130,7 @@ objects, they are still using the default pytest representation::
|
||||||
|
|
||||||
$ pytest test_time.py --collect-only
|
$ pytest test_time.py --collect-only
|
||||||
======= test session starts ========
|
======= test session starts ========
|
||||||
platform linux -- Python 3.5.2, pytest-3.0.0, py-1.4.31, pluggy-0.3.1
|
platform linux -- Python 3.5.2, pytest-3.0.1, py-1.4.31, pluggy-0.3.1
|
||||||
rootdir: $REGENDOC_TMPDIR, inifile:
|
rootdir: $REGENDOC_TMPDIR, inifile:
|
||||||
collected 6 items
|
collected 6 items
|
||||||
<Module 'test_time.py'>
|
<Module 'test_time.py'>
|
||||||
|
@ -181,7 +181,7 @@ this is a fully self-contained example which you can run with::
|
||||||
|
|
||||||
$ pytest test_scenarios.py
|
$ pytest test_scenarios.py
|
||||||
======= test session starts ========
|
======= test session starts ========
|
||||||
platform linux -- Python 3.5.2, pytest-3.0.0, py-1.4.31, pluggy-0.3.1
|
platform linux -- Python 3.5.2, pytest-3.0.1, py-1.4.31, pluggy-0.3.1
|
||||||
rootdir: $REGENDOC_TMPDIR, inifile:
|
rootdir: $REGENDOC_TMPDIR, inifile:
|
||||||
collected 4 items
|
collected 4 items
|
||||||
|
|
||||||
|
@ -194,7 +194,7 @@ If you just collect tests you'll also nicely see 'advanced' and 'basic' as varia
|
||||||
|
|
||||||
$ pytest --collect-only test_scenarios.py
|
$ pytest --collect-only test_scenarios.py
|
||||||
======= test session starts ========
|
======= test session starts ========
|
||||||
platform linux -- Python 3.5.2, pytest-3.0.0, py-1.4.31, pluggy-0.3.1
|
platform linux -- Python 3.5.2, pytest-3.0.1, py-1.4.31, pluggy-0.3.1
|
||||||
rootdir: $REGENDOC_TMPDIR, inifile:
|
rootdir: $REGENDOC_TMPDIR, inifile:
|
||||||
collected 4 items
|
collected 4 items
|
||||||
<Module 'test_scenarios.py'>
|
<Module 'test_scenarios.py'>
|
||||||
|
@ -259,7 +259,7 @@ Let's first see how it looks like at collection time::
|
||||||
|
|
||||||
$ pytest test_backends.py --collect-only
|
$ pytest test_backends.py --collect-only
|
||||||
======= test session starts ========
|
======= test session starts ========
|
||||||
platform linux -- Python 3.5.2, pytest-3.0.0, py-1.4.31, pluggy-0.3.1
|
platform linux -- Python 3.5.2, pytest-3.0.1, py-1.4.31, pluggy-0.3.1
|
||||||
rootdir: $REGENDOC_TMPDIR, inifile:
|
rootdir: $REGENDOC_TMPDIR, inifile:
|
||||||
collected 2 items
|
collected 2 items
|
||||||
<Module 'test_backends.py'>
|
<Module 'test_backends.py'>
|
||||||
|
@ -320,7 +320,7 @@ The result of this test will be successful::
|
||||||
|
|
||||||
$ pytest test_indirect_list.py --collect-only
|
$ pytest test_indirect_list.py --collect-only
|
||||||
======= test session starts ========
|
======= test session starts ========
|
||||||
platform linux -- Python 3.5.2, pytest-3.0.0, py-1.4.31, pluggy-0.3.1
|
platform linux -- Python 3.5.2, pytest-3.0.1, py-1.4.31, pluggy-0.3.1
|
||||||
rootdir: $REGENDOC_TMPDIR, inifile:
|
rootdir: $REGENDOC_TMPDIR, inifile:
|
||||||
collected 1 items
|
collected 1 items
|
||||||
<Module 'test_indirect_list.py'>
|
<Module 'test_indirect_list.py'>
|
||||||
|
@ -447,7 +447,7 @@ If you run this with reporting for skips enabled::
|
||||||
|
|
||||||
$ pytest -rs test_module.py
|
$ pytest -rs test_module.py
|
||||||
======= test session starts ========
|
======= test session starts ========
|
||||||
platform linux -- Python 3.5.2, pytest-3.0.0, py-1.4.31, pluggy-0.3.1
|
platform linux -- Python 3.5.2, pytest-3.0.1, py-1.4.31, pluggy-0.3.1
|
||||||
rootdir: $REGENDOC_TMPDIR, inifile:
|
rootdir: $REGENDOC_TMPDIR, inifile:
|
||||||
collected 2 items
|
collected 2 items
|
||||||
|
|
||||||
|
|
|
@ -117,7 +117,7 @@ then the test collection looks like this::
|
||||||
|
|
||||||
$ pytest --collect-only
|
$ pytest --collect-only
|
||||||
======= test session starts ========
|
======= test session starts ========
|
||||||
platform linux -- Python 3.5.2, pytest-3.0.0, py-1.4.31, pluggy-0.3.1
|
platform linux -- Python 3.5.2, pytest-3.0.1, py-1.4.31, pluggy-0.3.1
|
||||||
rootdir: $REGENDOC_TMPDIR, inifile: pytest.ini
|
rootdir: $REGENDOC_TMPDIR, inifile: pytest.ini
|
||||||
collected 2 items
|
collected 2 items
|
||||||
<Module 'check_myapp.py'>
|
<Module 'check_myapp.py'>
|
||||||
|
@ -163,7 +163,7 @@ You can always peek at the collection tree without running tests like this::
|
||||||
|
|
||||||
. $ pytest --collect-only pythoncollection.py
|
. $ pytest --collect-only pythoncollection.py
|
||||||
======= test session starts ========
|
======= test session starts ========
|
||||||
platform linux -- Python 3.5.2, pytest-3.0.0, py-1.4.31, pluggy-0.3.1
|
platform linux -- Python 3.5.2, pytest-3.0.1, py-1.4.31, pluggy-0.3.1
|
||||||
rootdir: $REGENDOC_TMPDIR, inifile: pytest.ini
|
rootdir: $REGENDOC_TMPDIR, inifile: pytest.ini
|
||||||
collected 3 items
|
collected 3 items
|
||||||
<Module 'CWD/pythoncollection.py'>
|
<Module 'CWD/pythoncollection.py'>
|
||||||
|
@ -230,7 +230,7 @@ will be left out::
|
||||||
|
|
||||||
$ pytest --collect-only
|
$ pytest --collect-only
|
||||||
======= test session starts ========
|
======= test session starts ========
|
||||||
platform linux -- Python 3.5.2, pytest-3.0.0, py-1.4.31, pluggy-0.3.1
|
platform linux -- Python 3.5.2, pytest-3.0.1, py-1.4.31, pluggy-0.3.1
|
||||||
rootdir: $REGENDOC_TMPDIR, inifile: pytest.ini
|
rootdir: $REGENDOC_TMPDIR, inifile: pytest.ini
|
||||||
collected 0 items
|
collected 0 items
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,7 @@ get on the terminal - we are working on that):
|
||||||
|
|
||||||
assertion $ pytest failure_demo.py
|
assertion $ pytest failure_demo.py
|
||||||
======= test session starts ========
|
======= test session starts ========
|
||||||
platform linux -- Python 3.5.2, pytest-3.0.0, py-1.4.31, pluggy-0.3.1
|
platform linux -- Python 3.5.2, pytest-3.0.1, py-1.4.31, pluggy-0.3.1
|
||||||
rootdir: $REGENDOC_TMPDIR/assertion, inifile:
|
rootdir: $REGENDOC_TMPDIR/assertion, inifile:
|
||||||
collected 42 items
|
collected 42 items
|
||||||
|
|
||||||
|
@ -361,7 +361,7 @@ get on the terminal - we are working on that):
|
||||||
> int(s)
|
> int(s)
|
||||||
E ValueError: invalid literal for int() with base 10: 'qwe'
|
E ValueError: invalid literal for int() with base 10: 'qwe'
|
||||||
|
|
||||||
<0-codegen $PYTHON_PREFIX/lib/python3.5/site-packages/_pytest/python.py:1174>:1: ValueError
|
<0-codegen $PYTHON_PREFIX/lib/python3.5/site-packages/_pytest/python.py:1189>:1: ValueError
|
||||||
_______ TestRaises.test_raises_doesnt ________
|
_______ TestRaises.test_raises_doesnt ________
|
||||||
|
|
||||||
self = <failure_demo.TestRaises object at 0xdeadbeef>
|
self = <failure_demo.TestRaises object at 0xdeadbeef>
|
||||||
|
|
|
@ -108,7 +108,7 @@ directory with the above conftest.py::
|
||||||
|
|
||||||
$ pytest
|
$ pytest
|
||||||
======= test session starts ========
|
======= test session starts ========
|
||||||
platform linux -- Python 3.5.2, pytest-3.0.0, py-1.4.31, pluggy-0.3.1
|
platform linux -- Python 3.5.2, pytest-3.0.1, py-1.4.31, pluggy-0.3.1
|
||||||
rootdir: $REGENDOC_TMPDIR, inifile:
|
rootdir: $REGENDOC_TMPDIR, inifile:
|
||||||
collected 0 items
|
collected 0 items
|
||||||
|
|
||||||
|
@ -156,7 +156,7 @@ and when running it will see a skipped "slow" test::
|
||||||
|
|
||||||
$ pytest -rs # "-rs" means report details on the little 's'
|
$ pytest -rs # "-rs" means report details on the little 's'
|
||||||
======= test session starts ========
|
======= test session starts ========
|
||||||
platform linux -- Python 3.5.2, pytest-3.0.0, py-1.4.31, pluggy-0.3.1
|
platform linux -- Python 3.5.2, pytest-3.0.1, py-1.4.31, pluggy-0.3.1
|
||||||
rootdir: $REGENDOC_TMPDIR, inifile:
|
rootdir: $REGENDOC_TMPDIR, inifile:
|
||||||
collected 2 items
|
collected 2 items
|
||||||
|
|
||||||
|
@ -170,7 +170,7 @@ Or run it including the ``slow`` marked test::
|
||||||
|
|
||||||
$ pytest --runslow
|
$ pytest --runslow
|
||||||
======= test session starts ========
|
======= test session starts ========
|
||||||
platform linux -- Python 3.5.2, pytest-3.0.0, py-1.4.31, pluggy-0.3.1
|
platform linux -- Python 3.5.2, pytest-3.0.1, py-1.4.31, pluggy-0.3.1
|
||||||
rootdir: $REGENDOC_TMPDIR, inifile:
|
rootdir: $REGENDOC_TMPDIR, inifile:
|
||||||
collected 2 items
|
collected 2 items
|
||||||
|
|
||||||
|
@ -284,7 +284,7 @@ which will add the string to the test header accordingly::
|
||||||
|
|
||||||
$ pytest
|
$ pytest
|
||||||
======= test session starts ========
|
======= test session starts ========
|
||||||
platform linux -- Python 3.5.2, pytest-3.0.0, py-1.4.31, pluggy-0.3.1
|
platform linux -- Python 3.5.2, pytest-3.0.1, py-1.4.31, pluggy-0.3.1
|
||||||
project deps: mylib-1.1
|
project deps: mylib-1.1
|
||||||
rootdir: $REGENDOC_TMPDIR, inifile:
|
rootdir: $REGENDOC_TMPDIR, inifile:
|
||||||
collected 0 items
|
collected 0 items
|
||||||
|
@ -308,7 +308,7 @@ which will add info only when run with "--v"::
|
||||||
|
|
||||||
$ pytest -v
|
$ pytest -v
|
||||||
======= test session starts ========
|
======= test session starts ========
|
||||||
platform linux -- Python 3.5.2, pytest-3.0.0, py-1.4.31, pluggy-0.3.1 -- $PYTHON_PREFIX/bin/python3.5
|
platform linux -- Python 3.5.2, pytest-3.0.1, py-1.4.31, pluggy-0.3.1 -- $PYTHON_PREFIX/bin/python3.5
|
||||||
cachedir: .cache
|
cachedir: .cache
|
||||||
info1: did you know that ...
|
info1: did you know that ...
|
||||||
did you?
|
did you?
|
||||||
|
@ -321,7 +321,7 @@ and nothing when run plainly::
|
||||||
|
|
||||||
$ pytest
|
$ pytest
|
||||||
======= test session starts ========
|
======= test session starts ========
|
||||||
platform linux -- Python 3.5.2, pytest-3.0.0, py-1.4.31, pluggy-0.3.1
|
platform linux -- Python 3.5.2, pytest-3.0.1, py-1.4.31, pluggy-0.3.1
|
||||||
rootdir: $REGENDOC_TMPDIR, inifile:
|
rootdir: $REGENDOC_TMPDIR, inifile:
|
||||||
collected 0 items
|
collected 0 items
|
||||||
|
|
||||||
|
@ -354,7 +354,7 @@ Now we can profile which test functions execute the slowest::
|
||||||
|
|
||||||
$ pytest --durations=3
|
$ pytest --durations=3
|
||||||
======= test session starts ========
|
======= test session starts ========
|
||||||
platform linux -- Python 3.5.2, pytest-3.0.0, py-1.4.31, pluggy-0.3.1
|
platform linux -- Python 3.5.2, pytest-3.0.1, py-1.4.31, pluggy-0.3.1
|
||||||
rootdir: $REGENDOC_TMPDIR, inifile:
|
rootdir: $REGENDOC_TMPDIR, inifile:
|
||||||
collected 3 items
|
collected 3 items
|
||||||
|
|
||||||
|
@ -416,7 +416,7 @@ If we run this::
|
||||||
|
|
||||||
$ pytest -rx
|
$ pytest -rx
|
||||||
======= test session starts ========
|
======= test session starts ========
|
||||||
platform linux -- Python 3.5.2, pytest-3.0.0, py-1.4.31, pluggy-0.3.1
|
platform linux -- Python 3.5.2, pytest-3.0.1, py-1.4.31, pluggy-0.3.1
|
||||||
rootdir: $REGENDOC_TMPDIR, inifile:
|
rootdir: $REGENDOC_TMPDIR, inifile:
|
||||||
collected 4 items
|
collected 4 items
|
||||||
|
|
||||||
|
@ -487,7 +487,7 @@ We can run this::
|
||||||
|
|
||||||
$ pytest
|
$ pytest
|
||||||
======= test session starts ========
|
======= test session starts ========
|
||||||
platform linux -- Python 3.5.2, pytest-3.0.0, py-1.4.31, pluggy-0.3.1
|
platform linux -- Python 3.5.2, pytest-3.0.1, py-1.4.31, pluggy-0.3.1
|
||||||
rootdir: $REGENDOC_TMPDIR, inifile:
|
rootdir: $REGENDOC_TMPDIR, inifile:
|
||||||
collected 7 items
|
collected 7 items
|
||||||
|
|
||||||
|
@ -591,7 +591,7 @@ and run them::
|
||||||
|
|
||||||
$ pytest test_module.py
|
$ pytest test_module.py
|
||||||
======= test session starts ========
|
======= test session starts ========
|
||||||
platform linux -- Python 3.5.2, pytest-3.0.0, py-1.4.31, pluggy-0.3.1
|
platform linux -- Python 3.5.2, pytest-3.0.1, py-1.4.31, pluggy-0.3.1
|
||||||
rootdir: $REGENDOC_TMPDIR, inifile:
|
rootdir: $REGENDOC_TMPDIR, inifile:
|
||||||
collected 2 items
|
collected 2 items
|
||||||
|
|
||||||
|
@ -681,7 +681,7 @@ and run it::
|
||||||
|
|
||||||
$ pytest -s test_module.py
|
$ pytest -s test_module.py
|
||||||
======= test session starts ========
|
======= test session starts ========
|
||||||
platform linux -- Python 3.5.2, pytest-3.0.0, py-1.4.31, pluggy-0.3.1
|
platform linux -- Python 3.5.2, pytest-3.0.1, py-1.4.31, pluggy-0.3.1
|
||||||
rootdir: $REGENDOC_TMPDIR, inifile:
|
rootdir: $REGENDOC_TMPDIR, inifile:
|
||||||
collected 3 items
|
collected 3 items
|
||||||
|
|
||||||
|
|
|
@ -70,7 +70,7 @@ marked ``smtp`` fixture function. Running the test looks like this::
|
||||||
|
|
||||||
$ pytest test_smtpsimple.py
|
$ pytest test_smtpsimple.py
|
||||||
======= test session starts ========
|
======= test session starts ========
|
||||||
platform linux -- Python 3.5.2, pytest-3.0.0, py-1.4.31, pluggy-0.3.1
|
platform linux -- Python 3.5.2, pytest-3.0.1, py-1.4.31, pluggy-0.3.1
|
||||||
rootdir: $REGENDOC_TMPDIR, inifile:
|
rootdir: $REGENDOC_TMPDIR, inifile:
|
||||||
collected 1 items
|
collected 1 items
|
||||||
|
|
||||||
|
@ -188,7 +188,7 @@ inspect what is going on and can now run the tests::
|
||||||
|
|
||||||
$ pytest test_module.py
|
$ pytest test_module.py
|
||||||
======= test session starts ========
|
======= test session starts ========
|
||||||
platform linux -- Python 3.5.2, pytest-3.0.0, py-1.4.31, pluggy-0.3.1
|
platform linux -- Python 3.5.2, pytest-3.0.1, py-1.4.31, pluggy-0.3.1
|
||||||
rootdir: $REGENDOC_TMPDIR, inifile:
|
rootdir: $REGENDOC_TMPDIR, inifile:
|
||||||
collected 2 items
|
collected 2 items
|
||||||
|
|
||||||
|
@ -516,7 +516,7 @@ Running the above tests results in the following test IDs being used::
|
||||||
|
|
||||||
$ pytest --collect-only
|
$ pytest --collect-only
|
||||||
======= test session starts ========
|
======= test session starts ========
|
||||||
platform linux -- Python 3.5.2, pytest-3.0.0, py-1.4.31, pluggy-0.3.1
|
platform linux -- Python 3.5.2, pytest-3.0.1, py-1.4.31, pluggy-0.3.1
|
||||||
rootdir: $REGENDOC_TMPDIR, inifile:
|
rootdir: $REGENDOC_TMPDIR, inifile:
|
||||||
collected 11 items
|
collected 11 items
|
||||||
<Module 'test_anothersmtp.py'>
|
<Module 'test_anothersmtp.py'>
|
||||||
|
@ -569,7 +569,7 @@ Here we declare an ``app`` fixture which receives the previously defined
|
||||||
|
|
||||||
$ pytest -v test_appsetup.py
|
$ pytest -v test_appsetup.py
|
||||||
======= test session starts ========
|
======= test session starts ========
|
||||||
platform linux -- Python 3.5.2, pytest-3.0.0, py-1.4.31, pluggy-0.3.1 -- $PYTHON_PREFIX/bin/python3.5
|
platform linux -- Python 3.5.2, pytest-3.0.1, py-1.4.31, pluggy-0.3.1 -- $PYTHON_PREFIX/bin/python3.5
|
||||||
cachedir: .cache
|
cachedir: .cache
|
||||||
rootdir: $REGENDOC_TMPDIR, inifile:
|
rootdir: $REGENDOC_TMPDIR, inifile:
|
||||||
collecting ... collected 2 items
|
collecting ... collected 2 items
|
||||||
|
@ -638,7 +638,7 @@ Let's run the tests in verbose mode and with looking at the print-output::
|
||||||
|
|
||||||
$ pytest -v -s test_module.py
|
$ pytest -v -s test_module.py
|
||||||
======= test session starts ========
|
======= test session starts ========
|
||||||
platform linux -- Python 3.5.2, pytest-3.0.0, py-1.4.31, pluggy-0.3.1 -- $PYTHON_PREFIX/bin/python3.5
|
platform linux -- Python 3.5.2, pytest-3.0.1, py-1.4.31, pluggy-0.3.1 -- $PYTHON_PREFIX/bin/python3.5
|
||||||
cachedir: .cache
|
cachedir: .cache
|
||||||
rootdir: $REGENDOC_TMPDIR, inifile:
|
rootdir: $REGENDOC_TMPDIR, inifile:
|
||||||
collecting ... collected 8 items
|
collecting ... collected 8 items
|
||||||
|
|
|
@ -27,7 +27,7 @@ Installation options::
|
||||||
To check your installation has installed the correct version::
|
To check your installation has installed the correct version::
|
||||||
|
|
||||||
$ pytest --version
|
$ pytest --version
|
||||||
This is pytest version 3.0.0, imported from $PYTHON_PREFIX/lib/python3.5/site-packages/pytest.py
|
This is pytest version 3.0.1, imported from $PYTHON_PREFIX/lib/python3.5/site-packages/pytest.py
|
||||||
|
|
||||||
If you get an error checkout :ref:`installation issues`.
|
If you get an error checkout :ref:`installation issues`.
|
||||||
|
|
||||||
|
@ -49,7 +49,7 @@ That's it. You can execute the test function now::
|
||||||
|
|
||||||
$ pytest
|
$ pytest
|
||||||
======= test session starts ========
|
======= test session starts ========
|
||||||
platform linux -- Python 3.5.2, pytest-3.0.0, py-1.4.31, pluggy-0.3.1
|
platform linux -- Python 3.5.2, pytest-3.0.1, py-1.4.31, pluggy-0.3.1
|
||||||
rootdir: $REGENDOC_TMPDIR, inifile:
|
rootdir: $REGENDOC_TMPDIR, inifile:
|
||||||
collected 1 items
|
collected 1 items
|
||||||
|
|
||||||
|
|
|
@ -55,7 +55,7 @@ them in turn::
|
||||||
|
|
||||||
$ pytest
|
$ pytest
|
||||||
======= test session starts ========
|
======= test session starts ========
|
||||||
platform linux -- Python 3.5.2, pytest-3.0.0, py-1.4.31, pluggy-0.3.1
|
platform linux -- Python 3.5.2, pytest-3.0.1, py-1.4.31, pluggy-0.3.1
|
||||||
rootdir: $REGENDOC_TMPDIR, inifile:
|
rootdir: $REGENDOC_TMPDIR, inifile:
|
||||||
collected 3 items
|
collected 3 items
|
||||||
|
|
||||||
|
@ -103,7 +103,7 @@ Let's run this::
|
||||||
|
|
||||||
$ pytest
|
$ pytest
|
||||||
======= test session starts ========
|
======= test session starts ========
|
||||||
platform linux -- Python 3.5.2, pytest-3.0.0, py-1.4.31, pluggy-0.3.1
|
platform linux -- Python 3.5.2, pytest-3.0.1, py-1.4.31, pluggy-0.3.1
|
||||||
rootdir: $REGENDOC_TMPDIR, inifile:
|
rootdir: $REGENDOC_TMPDIR, inifile:
|
||||||
collected 3 items
|
collected 3 items
|
||||||
|
|
||||||
|
|
|
@ -224,7 +224,7 @@ Running it with the report-on-xfail option gives this output::
|
||||||
|
|
||||||
example $ pytest -rx xfail_demo.py
|
example $ pytest -rx xfail_demo.py
|
||||||
======= test session starts ========
|
======= test session starts ========
|
||||||
platform linux -- Python 3.5.2, pytest-3.0.0, py-1.4.31, pluggy-0.3.1
|
platform linux -- Python 3.5.2, pytest-3.0.1, py-1.4.31, pluggy-0.3.1
|
||||||
rootdir: $REGENDOC_TMPDIR/example, inifile:
|
rootdir: $REGENDOC_TMPDIR/example, inifile:
|
||||||
collected 7 items
|
collected 7 items
|
||||||
|
|
||||||
|
|
|
@ -29,7 +29,7 @@ Running this would result in a passed test except for the last
|
||||||
|
|
||||||
$ pytest test_tmpdir.py
|
$ pytest test_tmpdir.py
|
||||||
======= test session starts ========
|
======= test session starts ========
|
||||||
platform linux -- Python 3.5.2, pytest-3.0.0, py-1.4.31, pluggy-0.3.1
|
platform linux -- Python 3.5.2, pytest-3.0.1, py-1.4.31, pluggy-0.3.1
|
||||||
rootdir: $REGENDOC_TMPDIR, inifile:
|
rootdir: $REGENDOC_TMPDIR, inifile:
|
||||||
collected 1 items
|
collected 1 items
|
||||||
|
|
||||||
|
|
|
@ -88,7 +88,7 @@ the ``self.db`` values in the traceback::
|
||||||
|
|
||||||
$ pytest test_unittest_db.py
|
$ pytest test_unittest_db.py
|
||||||
======= test session starts ========
|
======= test session starts ========
|
||||||
platform linux -- Python 3.5.2, pytest-3.0.0, py-1.4.31, pluggy-0.3.1
|
platform linux -- Python 3.5.2, pytest-3.0.1, py-1.4.31, pluggy-0.3.1
|
||||||
rootdir: $REGENDOC_TMPDIR, inifile:
|
rootdir: $REGENDOC_TMPDIR, inifile:
|
||||||
collected 2 items
|
collected 2 items
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue