dee9a55e43
- screener now just a function, not a class - add 'FundQuery' query class - add 'IS-IN' operator - fix 'GTE' & 'LTE' operators - more exchanges Predefined tweaks: - convert predefined query strings to use EquityQuery (better docs) - send predefined queries to Yahoo's predefined endpoint - expose PREDEFINED_SCREENER_QUERIES via __init__.py - screen() argument defaults don't apply to predefineds
38 lines
1.2 KiB
Python
38 lines
1.2 KiB
Python
import unittest
|
|
from unittest.mock import patch, MagicMock
|
|
from yfinance.screener.screener import screen
|
|
from yfinance.screener.query import EquityQuery
|
|
|
|
|
|
class TestScreener(unittest.TestCase):
|
|
|
|
@classmethod
|
|
def setUpClass(self):
|
|
self.query = EquityQuery('gt',['eodprice',3])
|
|
self.predefined = 'aggressive_small_caps'
|
|
|
|
@patch('yfinance.screener.screener.YfData.post')
|
|
def test_set_large_size_in_body(self, mock_post):
|
|
with self.assertRaises(ValueError):
|
|
screen(self.query, size=251)
|
|
|
|
@patch('yfinance.data.YfData.post')
|
|
def test_fetch_query(self, mock_post):
|
|
mock_response = MagicMock()
|
|
mock_response.json.return_value = {'finance': {'result': [{'key': 'value'}]}}
|
|
mock_post.return_value = mock_response
|
|
|
|
response = screen(self.query)
|
|
self.assertEqual(response, {'key': 'value'})
|
|
|
|
@patch('yfinance.data.YfData.get')
|
|
def test_fetch_predefined(self, mock_get):
|
|
mock_response = MagicMock()
|
|
mock_response.json.return_value = {'finance': {'result': [{'key': 'value'}]}}
|
|
mock_get.return_value = mock_response
|
|
|
|
response = screen(self.predefined)
|
|
self.assertEqual(response, {'key': 'value'})
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main() |