Welcome to the coding [dojo](glossary#dojo) for **Unit Testing** in python.
This project serves as a sandbox environment, that you can checkout, load in your IDE and start your training. Also you will find
a set of training materials, examples, tutorials and exercises.
**Table of Contents**
[[_TOC_]]
If you have something to provide or find issues with the existing examples or tutorials, please file a merge request or contribute to the wiki.
# Exercises (KATA)
[Kata](glossary#kata), a Japanese word, are detailed choreographed patterns of movements practiced either solo or in pairs probably within a [dojo](glossary#dojo).
The following list is an index of kata descriptions. You can use the dojo as a framework to perform your exercises in. The times are estimates in how long it should *ideally* take, thus they can hold for a good complexity rating.
For each of the instructions follow these guides:
- Each instruction equals a test you should formalize before you tackle the production code.
-**Do not read ahead.** Do one task at a time - the trick is to learn to work incrementally.
- Solve things as simply as possible so that you force yourself to write tests you did not think about.
-**Refactor your code after each passing test**
Ideally try to exercise at least 15 minutes each day (yes you can split a kata for multiple days) for at least two weeks in a row.
The times are just an estimation for people who have done this several times. For the first time you do the KATA you can easily tripple the times.
A huge list of kata including comments and implementation examples can be found at [codingdojo.org](http://codingdojo.org/kata/).
# Links
### External Links
-**C**
-[coding dojo: kata](http://codingdojo.org/kata/) A big repository of coding katas
-[Clean Code Developers](https://clean-code-developer.com/) Initiative to become better developers
-**X**
-[xUnit testing patterns (xunitpatterns.com)](http://xunitpatterns.com/) Best practices and patterns for unit testing
## Presentations
### TDD Examples
An example of TDDing a class that generates the list of prime factors for a given number by Robert C Martin: [Slides](http://butunclebob.com/files/downloads/Prime%20Factors%20Kata.ppt).
This is a brilliant example in *solving things as simple as possible*. For example the first few tests the list of prime factors is generated by `add [n] if [n] divides [m]` without testing for being prime at all.
### Google TechTalk
[Design Tech Talk: OO Design for Testability](https://www.youtube.com/watch?v=acjvKJiOvXw)