예제 #1
0
class PortfolioValueTest(unittest.TestCase):
    def fake_current_prices(self):
        return {"IBM": 140.0, "HPQ": 32.0}

    def setUp(self):
        self.p = Portfolio()
        self.p.buy("IBM", 100, 120.0)
        self.p.buy("HPQ", 100, 30.0)
        self.p.current_prices = self.fake_current_prices

    def test_value(self):
        self.assertEqual(self.p.value(), 17200)
예제 #2
0
class PortfolioValueTest(unittest.TestCase):
    def setUp(self):
        # Save the real requests, and install our fake.
        self.old_requests = portfolio.portfolio3.requests
        portfolio.portfolio3.requests = FakeRequests()

        self.p = Portfolio()
        self.p.buy("IBM", 100, 120.0)
        self.p.buy("HPQ", 100, 30.0)

    def test_value(self):
        self.assertEqual(self.p.value(), 17200)

    def tearDown(self):
        # Restore the real requests.
        portfolio.portfolio3.requests = self.old_requests
예제 #3
0
class PortfolioSellTest(unittest.TestCase):
    def setUp(self):
        self.p = Portfolio()
        self.p.buy("MSFT", 100, 27.0)
        self.p.buy("DELL", 100, 17.0)
        self.p.buy("ORCL", 100, 34.0)

    def test_sell(self):
        self.p.sell("MSFT", 50)
        self.assertEqual(self.p.cost(), 6450)

    def test_not_enough(self):
        with self.assertRaises(ValueError):
            self.p.sell("MSFT", 200)

    def test_dont_own_it(self):
        with self.assertRaises(ValueError):
            self.p.sell("IBM", 1)
예제 #4
0
class PortfolioValueTest(unittest.TestCase):
    def setUp(self):
        self.p = Portfolio()
        self.p.buy("IBM", 100, 120.0)
        self.p.buy("HPQ", 100, 30.0)

    def test_value(self):
        # Create a mock requests.get.
        with mock.patch("portfolio.portfolio3.requests.get") as req_get:

            # When called, it will return this value:
            req_get.return_value = SimpleNamespace(
                text="\nIBM,,,140\nHPQ,,,32\n")

            # Run the test!
            self.assertEqual(self.p.value(), 17200)

            # We can ask the mock what its arguments were.
            self.assertEqual(len(req_get.call_args_list), 1)
            called_url = req_get.call_args_list[0][0][0]
            self.assertIn("api.worldtradingdata.com/api/v1/stock", called_url)
            self.assertIn("symbol=HPQ,IBM", called_url)
예제 #5
0
def test_bad_input():
    p = Portfolio()
    with pytest.raises(TypeError):
        p.buy("IBM")
예제 #6
0
def test_buy_two_stocks():
    p = Portfolio()
    p.buy("IBM", 100, 176.48)
    p.buy("HPQ", 100, 36.15)
    assert p.cost() == 21263.0
예제 #7
0
def test_buy_one_stock():
    p = Portfolio()
    p.buy("IBM", 100, 176.48)
    assert p.cost() == 17648.0
예제 #8
0
 def test_bad_input(self):
     p = Portfolio()
     with self.assertRaises(TypeError):
         p.buy("IBM")
예제 #9
0
 def test_buy_two_stocks(self):
     p = Portfolio()
     p.buy("IBM", 100, 176.48)
     p.buy("HPQ", 100, 36.15)
     self.assertEqual(p.cost(), 21263.0)
예제 #10
0
 def test_buy_one_stock(self):
     p = Portfolio()
     p.buy("IBM", 100, 176.48)
     self.assertEqual(p.cost(), 17648.0)