Commit aa589c54 authored by Daniel Scheffler's avatar Daniel Scheffler
Browse files

Migrate test calls from nosetests to pytest.


Signed-off-by: Daniel Scheffler's avatarDaniel Scheffler <danschef@gfz-potsdam.de>
parent 2aeed839
Pipeline #35275 passed with stage
in 4 minutes and 51 seconds
# .coveragerc to control coverage.py
[run]
branch = False
concurrency = multiprocessing
parallel = True
[report]
show_missing = True
# Regexes for lines to exclude from consideration
exclude_lines =
# Have to re-enable the standard pragma
pragma: no cover
# Don't complain if tests don't hit defensive assertion code:
raise AssertionError
raise NotImplementedError
# Don't complain if non-runnable code isn't run:
if 0:
if __name__ == .__main__.:
ignore_errors = True
[html]
directory = htmlcov
......@@ -12,20 +12,27 @@ test_sensormapgeo:
script:
- source /root/mambaforge/bin/activate ci_env
- pip install 'pyresample<1.17.0' # https://github.com/pytroll/pyresample/issues/325
- pip install pytest pytest-cov pytest-reporter-html1
# run nosetests
- make nosetests
# run tests
- make pytest
# run tests
- make tests
# create the docs
- make docs
artifacts:
expose_as: 'Test and coverage report'
paths:
- htmlcov/
- report.html
- docs/_build/html/
- nosetests.html
- nosetests.xml
reports:
cobertura: coverage.xml
junit: report.xml
expire_in: 30 days
when: always
......@@ -84,7 +91,7 @@ pages: # this job must be called 'pages' to advise GitLab to upload content to
- mkdir public
- mkdir -p public/doc
- mkdir -p public/coverage
- mkdir -p public/nosetests_reports
- mkdir -p public/tests_reports
# Copy over the docs
- cp -r docs/_build/html/* public/doc/
......@@ -92,14 +99,14 @@ pages: # this job must be called 'pages' to advise GitLab to upload content to
# Copy over the coverage reports
- cp -r htmlcov/* public/coverage/
# Copy over the nosetests reports
- cp nosetests.* public/nosetests_reports/
# Copy over the tests reports
- cp report.html public/tests_reports/
# Check if everything is working great
- ls -al public
- ls -al public/doc
- ls -al public/coverage
- ls -al public/nosetests_reports
- ls -al public/tests_reports
artifacts:
paths:
- public
......
.PHONY: clean clean-test clean-pyc clean-build docs help
.PHONY: clean clean-test clean-pyc clean-build docs help pytest
.DEFAULT_GOAL := help
define BROWSER_PYSCRIPT
......@@ -48,8 +48,10 @@ clean-test: ## remove test and coverage artifacts
rm -f .coverage
rm -fr .coverage.*
rm -fr htmlcov/
rm -fr nosetests.html
rm -fr nosetests.xml
rm -fr report.html
rm -fr report.xml
rm -fr coverage.xml
rm -fr .pytest_cache
lint: ## check style with flake8
flake8 --max-line-length=120 sensormapgeo tests > ./tests/linting/flake8.log || \
......@@ -81,6 +83,24 @@ nosetests: clean-test ## Runs nosetests with coverage, xUnit and nose-html-outpu
nosetests -vv --with-coverage --cover-package=sensormapgeo --cover-erase --cover-html --cover-html-dir=htmlcov \
--with-html --with-xunit --rednose --force-color
pytest: clean-test ## Runs pytest with coverage and creates coverage and test report
## - puts the coverage results in the folder 'htmlcov'
## - generates cobertura 'coverage.xml' (needed to show coverage in GitLab MR changes)
## - generates 'report.html' based on pytest-reporter-html1
## - generates JUnit 'report.xml' to show the test report as a new tab in a GitLab MR
## NOTE: additional options pytest and coverage (plugin pyteest-cov) are defined in .pytest.ini and .coveragerc
pytest tests \
--verbosity=3 \
--color=yes \
--tb=short \
--cov=sensormapgeo \
--cov-report html:htmlcov \
--cov-report term-missing \
--cov-report xml:coverage.xml \
--template=html1/index.html --report=report.html \
--junitxml report.xml
docs: ## generate Sphinx HTML documentation, including API docs
rm -f docs/sensormapgeo.rst
rm -f docs/modules.rst
......
......@@ -43,12 +43,11 @@ requirements = ['numpy', 'gdal', 'pyresample>=1.11.0', 'py_tools_ds>=0.18.0', 'p
setup_requirements = []
test_requirements = ['coverage', 'nose', 'nose-htmloutput', 'rednose', 'urlchecker']
test_requirements = ['pytest', 'pytest-cov', 'pytest-reporter-html1', 'urlchecker']
setup(
author="Daniel Scheffler",
author_email='daniel.scheffler@gfz-potsdam.de',
python_requires='>=3.6',
classifiers=[
'Development Status :: 4 - Beta',
'Intended Audience :: Developers',
......@@ -58,6 +57,7 @@ setup(
'Programming Language :: Python :: 3.6',
'Programming Language :: Python :: 3.7',
'Programming Language :: Python :: 3.8',
'Programming Language :: Python :: 3.9'
],
description="A package for transforming remote sensing images between sensor and map geometry.",
install_requires=requirements,
......@@ -67,6 +67,7 @@ setup(
keywords='sensormapgeo',
name='sensormapgeo',
packages=find_packages(exclude=['tests*']),
python_requires='>=3.6',
setup_requires=setup_requirements,
test_suite='tests',
tests_require=test_requirements,
......
......@@ -16,15 +16,13 @@ dependencies:
- pip:
- pebble
- coverage
- flake8
- nose
- nose2
- nose-htmloutput
- pycodestyle
- pydocstyle
- pylint
- rednose
- pytest
- pytest-cov
- pytest-reporter-html1
- sphinx-argparse
- sphinx-autodoc-typehints
- sphinx_rtd_theme
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment