Package: pytest-pep8
py.test plugin for efficiently checking PEP8 complianceUsageinstall via:pip install pytest-pep8if you then type:py.test --pep8every file ending in.pywill be discovered and pep8-checked,
starting from the command line arguments.WarningRunning pep8 tests on your project is likely to cause a lot of
issues.  This plugin allows to configure on a per-project and
per-file basis which errors or warnings to care about, seepep8ignore.  As a preliminary advise, if you have
projects where you don’t want to care at all about pep8 checks,
you can put configure it like this:# content of setup.cfg (or pytest.ini)
[pytest]
pep8ignore = * ALLA little exampleIf you have a pep8-violating file like this:# content of myfile.py

somefunc( 123,456)you can run it with the plugin installed:$ py.test --pep8
=========================== test session starts ============================
platform linux2 -- Python 2.7.6 -- py-1.4.30 -- pytest-2.7.2
rootdir: /tmp/doc-exec-2, inifile:
plugins: pep8, cache
collected 1 items

myfile.py F

================================= FAILURES =================================
________________________________ PEP8-check ________________________________
/tmp/doc-exec-2/myfile.py:2:10: E201 whitespace after '('
somefunc( 123,456)
         ^
/tmp/doc-exec-2/myfile.py:2:14: E231 missing whitespace after ','
somefunc( 123,456)
             ^

========================= 1 failed in 0.00 seconds =========================For the meaning of (E)rror and (W)arning codes, see the error
output when running against your files or checkoutpep8.py.Let’s not now fix the PEP8 errors:# content of myfile.py
somefunc(123, 456)and run again:$ py.test --pep8
=========================== test session starts ============================
platform linux2 -- Python 2.7.6 -- py-1.4.30 -- pytest-2.7.2
rootdir: /tmp/doc-exec-2, inifile:
plugins: pep8, cache
collected 1 items

myfile.py .

========================= 1 passed in 0.00 seconds =========================the pep8 check now is passing. Moreover, if
you run it once again (and report skip reasons):$ py.test --pep8 -rs
=========================== test session starts ============================
platform linux2 -- Python 2.7.6 -- py-1.4.30 -- pytest-2.7.2
rootdir: /tmp/doc-exec-2, inifile:
plugins: pep8, cache
collected 1 items

myfile.py s
========================= short test summary info ==========================
SKIP [1] /home/hpk/p/pytest-pep8/pytest_pep8.py:65: file(s) previously passed PEP8 checks

======================== 1 skipped in 0.00 seconds =========================you can see that the pep8 check was skipped because
the file has not been modified since it was last checked.
As the pep8 plugin uses thepytest-cache pluginto implement its caching, you can use its--clearcacheoption to
remove all pytest caches, among them the pep8 related one, which
will trigger the pep8 checking code to run once again:$ py.test --pep8 --clearcache
=========================== test session starts ============================
platform linux2 -- Python 2.7.6 -- py-1.4.30 -- pytest-2.7.2
rootdir: /tmp/doc-exec-2, inifile:
plugins: pep8, cache
collected 1 items

myfile.py .

========================= 1 passed in 0.00 seconds =========================Configuring PEP8 options per project and fileYou may configure PEP8-checking options for your project
by adding anpep8ignoreentry to yoursetup.cfgorsetup.cfgfile like this:# content of setup.cfg
[pytest]
pep8ignore = E201 E231This would globally prevent complaints about two whitespace issues.
Rerunning with the above example will now look better:$ py.test -q  --pep8
.
1 passed in 0.00 secondsIf you have some files where you want to specifically ignore
some errors or warnings you can start a pep8ignore line with
a glob-pattern and a space-separated list of codes:# content of setup.cfg
[pytest]
pep8ignore =
    *.py E201
    doc/conf.py ALLSo if you have a conf.py like this:# content of doc/conf.py

func (  [1,2,3]) #this line lots pep8 errors :)then running again with the previous example will show a single
failure and it will ignore doc/conf.py alltogether:$ py.test --pep8 -v # verbose shows what is ignored
=========================== test session starts ============================
platform linux2 -- Python 2.7.6 -- py-1.4.30 -- pytest-2.7.2 -- /home/hpk/venv/clean/bin/python
cachedir: /tmp/doc-exec-2/.cache
rootdir: /tmp/doc-exec-2, inifile: setup.cfg
plugins: pep8, cache
collecting ... collected 1 items

myfile.py PASSED

========================= 1 passed in 0.01 seconds =========================Note that doc/conf.py was not considered or imported.If you’ld like to have longer lines than 79 chars (which is the default for the
pep8 checker), you can configure it like this:# content of setup.cfg
[pytest]
pep8maxlinelength = 99Running PEP8 checks and no other testsYou can also restrict your test run to only perform “pep8” tests
and not any other tests by typing:py.test --pep8 -m pep8This will only run test items with the “pep8” marker which this
plugins adds dynamically.NotesThe repository of this plugin is athttp://bitbucket.org/pytest-dev/pytest-pep8For more info on py.test seehttp://pytest.orgThe code is partially based on Ronny Pfannschmidt’s pytest-codecheckers plugin.