DEV Community

Cover image for Introduction To Testing By Writing A Simple Maths Lib
Abdur-Rahmaan Janhangeer
Abdur-Rahmaan Janhangeer

Posted on

1 1

Introduction To Testing By Writing A Simple Maths Lib

At one time or the other, testing becomes a need. You can't afford to ship parts not working so ... you test to ensure that everything is as intended. You don't only test codes but also guis, apis and database functioning. In this post we'll be sailing in shallow waters to enable beginners to start testing, once for all.

Our Maths Lib

Let us write a maths lib to solve common maths issues

  • area of square
  • area of triangle
  • length of hypotenuse

for the name i've chosen complemaths as it complements the standard library

Let us write our class

class Complemaths:

    def area_square(length_, width_):
        return width_ * length_

    def area_triangle(base_, height_):
        return base_ * height_ * 0.5

    def hypotenuse(side1_, side2_):
        return sqrt(side1_**2 + side2_**2)
  • 1 we did not add a constructor here as it was not needed.
  • 2 also, side1_**2 could have been side1_*side1_
  • 3 area_triangle and hypotenuse return floats

let us use our lib

Usage

print(Complemaths.area_square(2, 2))
print(Complemaths.area_triangle(5, 2))
print(Complemaths.hypotenuse(5, 5))

gives out

4
5.0
7.0710678118654755

An Overview Of Testing

It's not really necessary to have a framework. You can do something like that:

def testing():
    if(Complemaths.area_square(2, 2) == 4):
        print('test1 ok')
    else:
        print('test1 fail')

testing()

or use assert

def test_area_square():
    assert Complemaths.area_square(2, 2) == 4, 'should be 4'

test_area_square()

if all ok, no messages is displayed, else halts execution

but, a framework has some advanced capabilities. fortunately, python ships with it's own called unittesting, inspired by java's Junit

Our Test With Unittesting

class ComplemathsTests(unittest.TestCase):
    def test_area_square(self):
        self.assertEqual(Complemaths.area_square(5, 2), 10)

    def test_area_triangle(self):
        self.assertEqual(Complemaths.area_triangle(5, 2), 5.0)

    def test_hypotenuse(self):
        self.assertEqual(Complemaths.hypotenuse(3, 4), 5.0)


if __name__ == '__main__':
    unittest.main()

it gives us

...
----------------------------------------------------------------------
Ran 3 tests in 0.001s

OK

testing by parts is called unit testing and using tests in your development is called test driven development, tdd.


Photo by Malcolm Lightbody on Unsplash

Heroku

Simplify your DevOps and maximize your time.

Since 2007, Heroku has been the go-to platform for developers as it monitors uptime, performance, and infrastructure concerns, allowing you to focus on writing code.

Learn More

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay