Browse Source

Configure pytest to run tests and coverage

Rodolfo Carvalho 8 years ago
parent
commit
fbc8d14bec
5 changed files with 42 additions and 1 deletions
  1. 14 1
      .coveragerc
  2. 6 0
      conftest.py
  3. 19 0
      setup.cfg
  4. 1 0
      test-requirements.txt
  5. 2 0
      tox.ini

+ 14 - 1
.coveragerc

@@ -1,5 +1,18 @@
 [run]
-omit=
+branch = True
+omit =
     */lib/python*/site-packages/*
     */lib/python*/*
     /usr/*
+    setup.py
+    # TODO(rhcarvalho): this is used to ignore test files from coverage report.
+    # We can make this less generic when we stick with a single test pattern in
+    # the repo.
+    test_*.py
+    *_tests.py
+
+[report]
+fail_under = 25
+
+[html]
+directory = cover

+ 6 - 0
conftest.py

@@ -0,0 +1,6 @@
+"""pytest configuration"""
+
+
+def pytest_ignore_collect(path):
+    """Hook to ignore symlink files and directories."""
+    return path.islink()

+ 19 - 0
setup.cfg

@@ -28,3 +28,22 @@ lint_disable=fixme,locally-disabled,file-ignored,duplicate-code
 exclude=.tox/*,utils/*,inventory/*
 max_line_length = 120
 ignore = E501,T003
+
+[tool:pytest]
+norecursedirs =
+    .*
+    __pycache__
+    cover
+    docs
+    # utils have its own config
+    utils
+python_files =
+    # TODO(rhcarvalho): rename test files to follow a single pattern. "test*.py"
+    # is Python unittest's default, while pytest discovers both "test_*.py" and
+    # "*_test.py" by default.
+    test_*.py
+    *_tests.py
+addopts =
+    --cov=.
+    --cov-report=term
+    --cov-report=html

+ 1 - 0
test-requirements.txt

@@ -11,3 +11,4 @@ nose
 coverage
 mock
 pytest
+pytest-cov

+ 2 - 0
tox.ini

@@ -17,3 +17,5 @@ commands =
     yamllint: python setup.py yamllint
     unit: nosetests
     generate_validation: python setup.py generate_validation
+
+