diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..58200d4 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +__pycache__/ diff --git a/README.md b/README.md index 942f76f..7fdd592 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,52 @@ # Codewars Test Framework for Python - -## Example +### Basic Example ```python -from solution import add import codewars_test as test +from solution import add @test.describe('Example Tests') def example_tests(): + @test.it('Example Test Case') def example_test_case(): test.assert_equals(add(1, 1), 2, 'Optional Message on Failure') ``` + +### Using Other Assertions + +Any function that raises an `AssertionError` can be used instead of `codewars_test` assertions: + +```python +import numpy as np +import pandas as pd +import codewars_test as test + +@test.describe('Example Tests') +def test_custom_assertions(): + + @test.it('Test something in numpy') + def test_numpy_assertion(): + actual = np.reshape(range(16), [4, 4]) + expected = np.reshape(range(16, 0, -1), [4, 4]) + np.testing.assert_equal(expected, actual) + + @test.it('Test something in pandas') + def test_pandas_assertion(): + actual = pd.DataFrame({'foo': [1, 2, 3]}) + expected = pd.DataFrame({'foo': [1, 42, 3]}) + pd.testing.assert_frame_equal(expected, actual) + + @test.it('Test something using a custom assertion') + def test_custom_assertion(): + def custom_assert_eq(actual, expected, msg=None): + if actual != expected: + default_msg = f'`{actual}` did not equal expected `{expected}`' + raise AssertionError(default_msg if msg is None else msg) + + actual = 2 + expected = 1 + custom_assert_eq(actual, expected) +``` +