Contributing to PyCalphad¶
This is a guide for best practices on making contributions to PyCalphad. See Onboarding as a Developer for instructions on setting up your development environment.
Tests¶
The PyCalphad test suite is one of the most valuable cumulative contributions of the library that ensures quality and continuous improvement.
PyCalphad tests aim for high code coverage. Ideally every PR has a net improvement on test coverage without trivially exercising code paths to improve coverage metrics.
Tests are for verifying correctness.
Most tests should be small, fast, and test only one thing so if/when the test fails, it is obvious where the problem lies.
Tests for
Model(and subclass) implementations should prefer to usepycalphad.tests.test_energy.check_outputorpycalphad.tests.test_energy.check_energyrather than usingWorkspace(orequilibrium) as that also exercises the minimizer.Tests that exercise the minimizer (synonym: solver) should be marked
@pytest.mark.solver
PyCalphad provides custom pytest fixtures
pycalphad.tests.fixtures.select_databaseandpycalphad.tests.fixtures.load_databasefor loading databases frompycalphad.tests.databases. Prefer not to add new databases to the test suite if a feature or bug can be exercised with a database already present in the test suite.