Skip to main content

No project description provided

Project description

Mutmut is a mutation testing library/tool. It aims to be usable as a program directly, but also to have an easy to use API.

Install

pip install mutmut

Usage

mutmut path/to/directory/you/want/to/mutate

This will by default run py.test on tests in the “tests” folder. Run

mutmut --help

for the available flags to use other runners, etc.

The output of the mutation tests (if you have surviving mutants) looks like:

FAILED: mutmut path/filename.py --mutation 10 --apply

I’ve made is to you can just copy paste everything after “FAILED:” and run it directly and you’ll get the mutant on disk. You should REALLY have the file you mutate under source code control and committed before you mutate it!

You should start from the bottom of the list, because if you start from the top, the indexes of the mutations change.

You can mark lines like this:

some_code_here()  # pragma: no mutate

to stop mutation on those lines. Some cases we’ve found where you need to whitelist lines are:

  • The version string on your library. You really shouldn’t have a test for this :P

  • Optimizing break instead of continue. The code runs fine when mutating break to continue, but it’s slower.

Example mutations

  • Integer literals are changed by adding 1. So 0 becomes 1, 5 becomes 6, etc.

  • < is changed to <=

  • break is changed to continue and vice versa

In general the idea is that the mutations should be as subtle as possible.

Future plan

  • Custom importer that will mutate the code on the way in

  • Plug in to py.test (and nose, etc?) to make it use the importer

  • Optimization: Keep a cache of hashes to know which files have changed since they were tested, so we can skip testing files which are already done

  • Optimization: Use testmon to know which tests to rerun for each mutation

  • Speed up: Make the runner itself a part of py.test so we can use py.test test parallelization/distribution

Changelog

0.0.4 (2017-05-06)

  • Try to fix pypi package

0.0.3 (2017-05-05)

  • Python 3 support (as far as baron supports it anyway)

  • Try running without mutations first to make sure we can run the test suite cleanly before starting mutation

  • Implemented feature to run mutation on covered lines only, this is useful for mutation testing existing tests when you don’t have 100% coverage

  • Error message on incorrect invocation

0.0.2 (2016-12-01)

  • Tons of fixes

0.0.1 (2016-12-01)

  • Initial version

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mutmut-0.0.4.tar.gz (9.4 kB view details)

Uploaded Source

Built Distribution

mutmut-0.0.4-py2.py3-none-any.whl (11.2 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file mutmut-0.0.4.tar.gz.

File metadata

  • Download URL: mutmut-0.0.4.tar.gz
  • Upload date:
  • Size: 9.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for mutmut-0.0.4.tar.gz
Algorithm Hash digest
SHA256 6fe7595a6d23e3aa477d9a9ae143f86cc106707e35a34b324105146fe19ceab9
MD5 a516812bb218ec0045c73bfec55e9fe5
BLAKE2b-256 93fe4dabf3d633fb78553ae0babd5e5a490a9766d671cd8a862716b4bb3de387

See more details on using hashes here.

Provenance

File details

Details for the file mutmut-0.0.4-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for mutmut-0.0.4-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 f30666a96fb43951ed3e758b4c96b67a09c8b095e7ad78776ef4a15f68d5e3a5
MD5 0f7f952e58b5f2eaa5ace51e19e09247
BLAKE2b-256 addeab392ea5181e45659c05604f0548d2383306d5fd418138647c338e86fbce

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page