Common Conventions

The following are some hopefully-helpful pointers to common conventions we’re using across most automation projects. Their adoption aims to make automation easily repeatable, runnable, more reliable, and with clearer output. This list is neither exhaustive nor authoritative, but we strive to keep it as up-to-date and relevant as possible.

Code Coverage

Purpose: Blurb about code coverage (what/why/how?) – particularly our current defacto, Coveralls – goes here.

Dependencies + Virtual Environments


Purpose: helps us manage updating our dependencies and requirements.


  1. Example one
  2. Example two


Purpose: We use pipenv for managing virtual environments, and installing dependencies.

Typically, we:

  1. Pin pipenv
  2. Install directly from the Pipfile
  3. Ignore generating and using the Pipfile.lock


Purpose: We use tox to run tests using multiple Python versions.


Purpose: We use Docker to help ensure consistent, portable builds, with dependency/environment control.

In most cases, we build our Docker image directly from its master branch in GitHub, in any one (or combination) of the following: Travis CI, Circle CI, and Jenkins.

Typically, we use two (2) main files, for Docker:

  1. Dockerfile
  2. .dockerignore


  1. Example one
  2. Example two

For both of these files, see the official docs at




PEP8 and flake8. Other considerations for specific linting are:

  1. flake8-isort
  2. flake8-docstrings
  3. pylint

Travis CI


We use Travis CI for linting pull requests/commits.