-
Notifications
You must be signed in to change notification settings - Fork 3
Testing
Maurits Kok edited this page May 31, 2021
·
9 revisions
Type of tests:
- Unit test: testing of individual units of source code (scripts, functions, classes).
- Integration test: testing of a combination of individual units as a group.
- Regression test: re-running all tests to ensure that the previously developed and tested code still performes after a code change.
pytest
supports execution of unittest test cases. The real advantage of pytest comes by writing pytest test cases. pytest test cases are a series of functions in a Python file starting with the name test_
.
pytest
has some other great features:
- Support for the built-in assert statement instead of using special self.assert*() methods
- Support for filtering for test cases
- Ability to rerun from the last failing test
- An ecosystem of hundreds of plugins to extend the functionality
Writing the sum test case example for pytest would look like this:
def test_sum():
assert sum([1, 2, 3]) == 6, "Should be 6"
def test_sum_tuple():
assert sum((1, 2, 3)) == 6, "Should be 6"
Some general best practices:
- Name of the test file should be the name of the function you want to test, prefixed by
test_
. Pytest will automatically recognize all tests with this convention. - Tests should be independent and never depend on another test/
- Test for edge cases
Code coverage measures the percentage of code under tests. A good goal would be to have at least 80% of the code base under unit testing.
- Make use of SonarCloud
- Use GitHub Actions for running tests (https://docs.github.com/en/actions/guides/building-and-testing-python)
Project details
- Genetic Interactions Pipeline
- DCC Project Goals
- Software Maintenance Plan
- Knowledge Transfer Workshop
FAIR
Code base
Dependencies
Git and GitHub
Resources