From that ppt slide, I figured out what my test file and first test should look like.
TestGame.py:
import unittest
class TestGame(unittest.TestCase):
pass
if __name__ == "__main__":
unittest.main()and my First Test:import unittest
class TestGame(unittest.TestCase):
def testGameHasZeroScore(self):
game = Game()
assert game.score == 0, "Score is zero"
if __name__ == "__main__":
unittest.main()
At this point I am still not certain what all of this is doing. Running the test produces this output:E
======================================================================
ERROR: testGameHasZeroScore (__main__.TestGame)
----------------------------------------------------------------------
Traceback (most recent call last):
File "TestGame.py", line 7, in testGameHasZeroScore
game = Game()
NameError: global name 'Game' is not defined
----------------------------------------------------------------------
Ran 1 test in 0.002s
FAILED (errors=1)
This is good then because I know that I'm using the unittest import correctly. At this point I wasn't familiar with why self was being passed to the test method but I assumed it had a need. I found out later why it was needed. To get this test to pass I had to create a Game.py file that created my Game class with a score member, and I had to add from Game import Game to my TestGame.py file under the current import statement. Here is my Game class:
Game.py:
class Game:
score = 0
And my TestGame.py:
import unittest
from Game import Game
class TestGame(unittest.TestCase):
def testGameHasZeroScore(self):
game = Game()
assert game.score == 0, "Score is zero"
if __name__ == "__main__":
unittest.main()
Running this now produces this output:
.
----------------------------------------------------------------------
Ran 1 test in 0.001s
OK
Awesome! I have completed my first unit test with Python.
No comments:
Post a Comment