Introduction
Objectives:
- Learn how to use Python's unittest module
Files Created: teststock.py
In this exercise, you will explore the basic mechanics of using Python's unittest
modules.
Objectives:
Files Created: teststock.py
In this exercise, you will explore the basic mechanics of using Python's unittest
modules.
In previous exercises, you created a file stock.py
that contained a Stock
class. In a separate file, teststock.py
, define the following testing code:
## teststock.py
import unittest
import stock
class TestStock(unittest.TestCase):
def test_create(self):
s = stock.Stock('GOOG', 100, 490.1)
self.assertEqual(s.name, 'GOOG')
self.assertEqual(s.shares, 100)
self.assertEqual(s.price, 490.1)
if __name__ == '__main__':
unittest.main()
Make sure you can run the file:
python3 teststock.py
.
------------------------------------------------------------------```
Ran 1 tests in 0.001s
OK
Using the code in teststock.py
as a guide, extend the TestStock
class with tests for the following:
Stock
using keyword arguments such as Stock(name='GOOG',shares=100,price=490.1)
.cost
property returns a correct valuesell()
method correctly updates the shares.from_row()
class method creates a new instance from good data.__repr__()
method creates a proper representation string.__eq__()
Suppose you wanted to write a unit test that checks for an exception. Here is how you can do it:
class TestStock(unittest.TestCase):
...
def test_bad_shares(self):
s = stock.Stock('GOOG', 100, 490.1)
with self.assertRaises(TypeError):
s.shares = '50'
...
Using this test as a guide, write unit tests for the following failure modes:
shares
to a string raises a TypeError
shares
to a negative number raises a ValueError
price
to a string raises a TypeError
price
to a negative number raises a ValueError
share
raises an AttributeError
In total, you should have around a dozen unit tests when you're done.
Important Note
For later use in the course, you will want to have a fully working stock.py
and teststock.py
file. Save your work in progress if you have to, but you are strongly encouraged to copy the code from Solutions/5_6
if things are still broken at this point.
We're going to use the teststock.py
file as a tool for improving the Stock
code later. You'll want it on hand to make sure that the new code behaves the same way as the old code.
Congratulations! You have completed the Python Unittest Module lab. You can practice more labs in LabEx to improve your skills.