Adapt tests to use async methods
This commit is contained in:
		| @@ -1084,7 +1084,7 @@ def ohlcv_history_list(): | |||||||
| @pytest.fixture | @pytest.fixture | ||||||
| def ohlcv_history(ohlcv_history_list): | def ohlcv_history(ohlcv_history_list): | ||||||
|     return ohlcv_to_dataframe(ohlcv_history_list, "5m", pair="UNITTEST/BTC", |     return ohlcv_to_dataframe(ohlcv_history_list, "5m", pair="UNITTEST/BTC", | ||||||
|                               fill_missing=True) |                               fill_missing=True, drop_incomplete=False) | ||||||
|  |  | ||||||
|  |  | ||||||
| @pytest.fixture | @pytest.fixture | ||||||
|   | |||||||
| @@ -353,11 +353,19 @@ def test_VolumePairList_refresh_empty(mocker, markets_empty, whitelist_conf): | |||||||
|      "BTC", ['ETH/BTC', 'TKN/BTC', 'HOT/BTC']), |      "BTC", ['ETH/BTC', 'TKN/BTC', 'HOT/BTC']), | ||||||
| ]) | ]) | ||||||
| def test_VolumePairList_whitelist_gen(mocker, whitelist_conf, shitcoinmarkets, tickers, | def test_VolumePairList_whitelist_gen(mocker, whitelist_conf, shitcoinmarkets, tickers, | ||||||
|                                       ohlcv_history_list, pairlists, base_currency, |                                       ohlcv_history, pairlists, base_currency, | ||||||
|                                       whitelist_result, caplog) -> None: |                                       whitelist_result, caplog) -> None: | ||||||
|     whitelist_conf['pairlists'] = pairlists |     whitelist_conf['pairlists'] = pairlists | ||||||
|     whitelist_conf['stake_currency'] = base_currency |     whitelist_conf['stake_currency'] = base_currency | ||||||
|  |  | ||||||
|  |     ohlcv_data = { | ||||||
|  |         ('ETH/BTC', '1d'): ohlcv_history, | ||||||
|  |         ('TKN/BTC', '1d'): ohlcv_history, | ||||||
|  |         ('LTC/BTC', '1d'): ohlcv_history, | ||||||
|  |         ('XRP/BTC', '1d'): ohlcv_history, | ||||||
|  |         ('HOT/BTC', '1d'): ohlcv_history, | ||||||
|  |     } | ||||||
|  |  | ||||||
|     mocker.patch('freqtrade.exchange.Exchange.exchange_has', MagicMock(return_value=True)) |     mocker.patch('freqtrade.exchange.Exchange.exchange_has', MagicMock(return_value=True)) | ||||||
|  |  | ||||||
|     if whitelist_result == 'static_in_the_middle': |     if whitelist_result == 'static_in_the_middle': | ||||||
| @@ -374,7 +382,7 @@ def test_VolumePairList_whitelist_gen(mocker, whitelist_conf, shitcoinmarkets, t | |||||||
|                           ) |                           ) | ||||||
|     mocker.patch.multiple( |     mocker.patch.multiple( | ||||||
|         'freqtrade.exchange.Exchange', |         'freqtrade.exchange.Exchange', | ||||||
|         get_historic_ohlcv=MagicMock(return_value=ohlcv_history_list), |         refresh_latest_ohlcv=MagicMock(return_value=ohlcv_data), | ||||||
|     ) |     ) | ||||||
|  |  | ||||||
|     # Provide for PerformanceFilter's dependency |     # Provide for PerformanceFilter's dependency | ||||||
| @@ -402,7 +410,7 @@ def test_VolumePairList_whitelist_gen(mocker, whitelist_conf, shitcoinmarkets, t | |||||||
|  |  | ||||||
|         for pairlist in pairlists: |         for pairlist in pairlists: | ||||||
|             if pairlist['method'] == 'AgeFilter' and pairlist['min_days_listed'] and \ |             if pairlist['method'] == 'AgeFilter' and pairlist['min_days_listed'] and \ | ||||||
|                     len(ohlcv_history_list) <= pairlist['min_days_listed']: |                     len(ohlcv_history) <= pairlist['min_days_listed']: | ||||||
|                 assert log_has_re(r'^Removed .* from whitelist, because age .* is less than ' |                 assert log_has_re(r'^Removed .* from whitelist, because age .* is less than ' | ||||||
|                                   r'.* day.*', caplog) |                                   r'.* day.*', caplog) | ||||||
|             if pairlist['method'] == 'PrecisionFilter' and whitelist_result: |             if pairlist['method'] == 'PrecisionFilter' and whitelist_result: | ||||||
| @@ -575,8 +583,13 @@ def test_agefilter_min_days_listed_too_large(mocker, default_conf, markets, tick | |||||||
|         get_patched_freqtradebot(mocker, default_conf) |         get_patched_freqtradebot(mocker, default_conf) | ||||||
|  |  | ||||||
|  |  | ||||||
| def test_agefilter_caching(mocker, markets, whitelist_conf_agefilter, tickers, ohlcv_history_list): | def test_agefilter_caching(mocker, markets, whitelist_conf_agefilter, tickers, ohlcv_history): | ||||||
|  |     ohlcv_data = { | ||||||
|  |         ('ETH/BTC', '1d'): ohlcv_history, | ||||||
|  |         ('TKN/BTC', '1d'): ohlcv_history, | ||||||
|  |         ('LTC/BTC', '1d'): ohlcv_history, | ||||||
|  |         ('XRP/BTC', '1d'): ohlcv_history, | ||||||
|  |     } | ||||||
|     mocker.patch.multiple('freqtrade.exchange.Exchange', |     mocker.patch.multiple('freqtrade.exchange.Exchange', | ||||||
|                           markets=PropertyMock(return_value=markets), |                           markets=PropertyMock(return_value=markets), | ||||||
|                           exchange_has=MagicMock(return_value=True), |                           exchange_has=MagicMock(return_value=True), | ||||||
| @@ -584,18 +597,18 @@ def test_agefilter_caching(mocker, markets, whitelist_conf_agefilter, tickers, o | |||||||
|                           ) |                           ) | ||||||
|     mocker.patch.multiple( |     mocker.patch.multiple( | ||||||
|         'freqtrade.exchange.Exchange', |         'freqtrade.exchange.Exchange', | ||||||
|         get_historic_ohlcv=MagicMock(return_value=ohlcv_history_list), |         refresh_latest_ohlcv=MagicMock(return_value=ohlcv_data), | ||||||
|     ) |     ) | ||||||
|  |  | ||||||
|     freqtrade = get_patched_freqtradebot(mocker, whitelist_conf_agefilter) |     freqtrade = get_patched_freqtradebot(mocker, whitelist_conf_agefilter) | ||||||
|     assert freqtrade.exchange.get_historic_ohlcv.call_count == 0 |     assert freqtrade.exchange.refresh_latest_ohlcv.call_count == 0 | ||||||
|     freqtrade.pairlists.refresh_pairlist() |     freqtrade.pairlists.refresh_pairlist() | ||||||
|     assert freqtrade.exchange.get_historic_ohlcv.call_count > 0 |     assert freqtrade.exchange.refresh_latest_ohlcv.call_count > 0 | ||||||
|  |  | ||||||
|     previous_call_count = freqtrade.exchange.get_historic_ohlcv.call_count |     previous_call_count = freqtrade.exchange.refresh_latest_ohlcv.call_count | ||||||
|     freqtrade.pairlists.refresh_pairlist() |     freqtrade.pairlists.refresh_pairlist() | ||||||
|     # Should not have increased since first call. |     # Should not have increased since first call. | ||||||
|     assert freqtrade.exchange.get_historic_ohlcv.call_count == previous_call_count |     assert freqtrade.exchange.refresh_latest_ohlcv.call_count == previous_call_count | ||||||
|  |  | ||||||
|  |  | ||||||
| def test_rangestabilityfilter_checks(mocker, default_conf, markets, tickers): | def test_rangestabilityfilter_checks(mocker, default_conf, markets, tickers): | ||||||
| @@ -625,7 +638,7 @@ def test_rangestabilityfilter_checks(mocker, default_conf, markets, tickers): | |||||||
|     (0.01, 5), |     (0.01, 5), | ||||||
|     (0.05, 0),  # Setting rate_of_change to 5% removes all pairs from the whitelist. |     (0.05, 0),  # Setting rate_of_change to 5% removes all pairs from the whitelist. | ||||||
| ]) | ]) | ||||||
| def test_rangestabilityfilter_caching(mocker, markets, default_conf, tickers, ohlcv_history_list, | def test_rangestabilityfilter_caching(mocker, markets, default_conf, tickers, ohlcv_history, | ||||||
|                                       min_rate_of_change, expected_length): |                                       min_rate_of_change, expected_length): | ||||||
|     default_conf['pairlists'] = [{'method': 'VolumePairList', 'number_assets': 10}, |     default_conf['pairlists'] = [{'method': 'VolumePairList', 'number_assets': 10}, | ||||||
|                                  {'method': 'RangeStabilityFilter', 'lookback_days': 2, |                                  {'method': 'RangeStabilityFilter', 'lookback_days': 2, | ||||||
| @@ -636,22 +649,30 @@ def test_rangestabilityfilter_caching(mocker, markets, default_conf, tickers, oh | |||||||
|                           exchange_has=MagicMock(return_value=True), |                           exchange_has=MagicMock(return_value=True), | ||||||
|                           get_tickers=tickers |                           get_tickers=tickers | ||||||
|                           ) |                           ) | ||||||
|  |     ohlcv_data = { | ||||||
|  |         ('ETH/BTC', '1d'): ohlcv_history, | ||||||
|  |         ('TKN/BTC', '1d'): ohlcv_history, | ||||||
|  |         ('LTC/BTC', '1d'): ohlcv_history, | ||||||
|  |         ('XRP/BTC', '1d'): ohlcv_history, | ||||||
|  |         ('HOT/BTC', '1d'): ohlcv_history, | ||||||
|  |         ('BLK/BTC', '1d'): ohlcv_history, | ||||||
|  |     } | ||||||
|     mocker.patch.multiple( |     mocker.patch.multiple( | ||||||
|         'freqtrade.exchange.Exchange', |         'freqtrade.exchange.Exchange', | ||||||
|         get_historic_ohlcv=MagicMock(return_value=ohlcv_history_list), |         refresh_latest_ohlcv=MagicMock(return_value=ohlcv_data), | ||||||
|     ) |     ) | ||||||
|  |  | ||||||
|     freqtrade = get_patched_freqtradebot(mocker, default_conf) |     freqtrade = get_patched_freqtradebot(mocker, default_conf) | ||||||
|     assert freqtrade.exchange.get_historic_ohlcv.call_count == 0 |     assert freqtrade.exchange.refresh_latest_ohlcv.call_count == 0 | ||||||
|     freqtrade.pairlists.refresh_pairlist() |     freqtrade.pairlists.refresh_pairlist() | ||||||
|     assert len(freqtrade.pairlists.whitelist) == expected_length |     assert len(freqtrade.pairlists.whitelist) == expected_length | ||||||
|     assert freqtrade.exchange.get_historic_ohlcv.call_count > 0 |     assert freqtrade.exchange.refresh_latest_ohlcv.call_count > 0 | ||||||
|  |  | ||||||
|     previous_call_count = freqtrade.exchange.get_historic_ohlcv.call_count |     previous_call_count = freqtrade.exchange.refresh_latest_ohlcv.call_count | ||||||
|     freqtrade.pairlists.refresh_pairlist() |     freqtrade.pairlists.refresh_pairlist() | ||||||
|     assert len(freqtrade.pairlists.whitelist) == expected_length |     assert len(freqtrade.pairlists.whitelist) == expected_length | ||||||
|     # Should not have increased since first call. |     # Should not have increased since first call. | ||||||
|     assert freqtrade.exchange.get_historic_ohlcv.call_count == previous_call_count |     assert freqtrade.exchange.refresh_latest_ohlcv.call_count == previous_call_count | ||||||
|  |  | ||||||
|  |  | ||||||
| @pytest.mark.parametrize("pairlistconfig,desc_expected,exception_expected", [ | @pytest.mark.parametrize("pairlistconfig,desc_expected,exception_expected", [ | ||||||
|   | |||||||
| @@ -870,7 +870,7 @@ def test_api_forcesell(botclient, mocker, ticker, fee, markets): | |||||||
| def test_api_pair_candles(botclient, ohlcv_history): | def test_api_pair_candles(botclient, ohlcv_history): | ||||||
|     ftbot, client = botclient |     ftbot, client = botclient | ||||||
|     timeframe = '5m' |     timeframe = '5m' | ||||||
|     amount = 2 |     amount = 3 | ||||||
|  |  | ||||||
|     # No pair |     # No pair | ||||||
|     rc = client_get(client, |     rc = client_get(client, | ||||||
| @@ -910,8 +910,8 @@ def test_api_pair_candles(botclient, ohlcv_history): | |||||||
|     assert 'data_stop_ts' in rc.json |     assert 'data_stop_ts' in rc.json | ||||||
|     assert rc.json['data_start'] == '2017-11-26 08:50:00+00:00' |     assert rc.json['data_start'] == '2017-11-26 08:50:00+00:00' | ||||||
|     assert rc.json['data_start_ts'] == 1511686200000 |     assert rc.json['data_start_ts'] == 1511686200000 | ||||||
|     assert rc.json['data_stop'] == '2017-11-26 08:55:00+00:00' |     assert rc.json['data_stop'] == '2017-11-26 09:00:00+00:00' | ||||||
|     assert rc.json['data_stop_ts'] == 1511686500000 |     assert rc.json['data_stop_ts'] == 1511686800000 | ||||||
|     assert isinstance(rc.json['columns'], list) |     assert isinstance(rc.json['columns'], list) | ||||||
|     assert rc.json['columns'] == ['date', 'open', 'high', |     assert rc.json['columns'] == ['date', 'open', 'high', | ||||||
|                                   'low', 'close', 'volume', 'sma', 'buy', 'sell', |                                   'low', 'close', 'volume', 'sma', 'buy', 'sell', | ||||||
| @@ -926,7 +926,10 @@ def test_api_pair_candles(botclient, ohlcv_history): | |||||||
|             [['2017-11-26 08:50:00', 8.794e-05, 8.948e-05, 8.794e-05, 8.88e-05, 0.0877869, |             [['2017-11-26 08:50:00', 8.794e-05, 8.948e-05, 8.794e-05, 8.88e-05, 0.0877869, | ||||||
|               None, 0, 0, 1511686200000, None, None], |               None, 0, 0, 1511686200000, None, None], | ||||||
|              ['2017-11-26 08:55:00', 8.88e-05, 8.942e-05, 8.88e-05, |              ['2017-11-26 08:55:00', 8.88e-05, 8.942e-05, 8.88e-05, | ||||||
|                  8.893e-05, 0.05874751, 8.886500000000001e-05, 1, 0, 1511686500000, 8.88e-05, None] |                  8.893e-05, 0.05874751, 8.886500000000001e-05, 1, 0, 1511686500000, 8.88e-05, None], | ||||||
|  |              ['2017-11-26 09:00:00', 8.891e-05, 8.893e-05, 8.875e-05, 8.877e-05, | ||||||
|  |                  0.7039405, 8.885000000000002e-05, 0, 0, 1511686800000, None, None] | ||||||
|  |  | ||||||
|              ]) |              ]) | ||||||
|  |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -128,27 +128,28 @@ def test_assert_df_raise(default_conf, mocker, caplog, ohlcv_history): | |||||||
|  |  | ||||||
|  |  | ||||||
| def test_assert_df(default_conf, mocker, ohlcv_history, caplog): | def test_assert_df(default_conf, mocker, ohlcv_history, caplog): | ||||||
|  |     df_len = len(ohlcv_history) - 1 | ||||||
|     # Ensure it's running when passed correctly |     # Ensure it's running when passed correctly | ||||||
|     _STRATEGY.assert_df(ohlcv_history, len(ohlcv_history), |     _STRATEGY.assert_df(ohlcv_history, len(ohlcv_history), | ||||||
|                         ohlcv_history.loc[1, 'close'], ohlcv_history.loc[1, 'date']) |                         ohlcv_history.loc[df_len, 'close'], ohlcv_history.loc[df_len, 'date']) | ||||||
|  |  | ||||||
|     with pytest.raises(StrategyError, match=r"Dataframe returned from strategy.*length\."): |     with pytest.raises(StrategyError, match=r"Dataframe returned from strategy.*length\."): | ||||||
|         _STRATEGY.assert_df(ohlcv_history, len(ohlcv_history) + 1, |         _STRATEGY.assert_df(ohlcv_history, len(ohlcv_history) + 1, | ||||||
|                             ohlcv_history.loc[1, 'close'], ohlcv_history.loc[1, 'date']) |                             ohlcv_history.loc[df_len, 'close'], ohlcv_history.loc[df_len, 'date']) | ||||||
|  |  | ||||||
|     with pytest.raises(StrategyError, |     with pytest.raises(StrategyError, | ||||||
|                        match=r"Dataframe returned from strategy.*last close price\."): |                        match=r"Dataframe returned from strategy.*last close price\."): | ||||||
|         _STRATEGY.assert_df(ohlcv_history, len(ohlcv_history), |         _STRATEGY.assert_df(ohlcv_history, len(ohlcv_history), | ||||||
|                             ohlcv_history.loc[1, 'close'] + 0.01, ohlcv_history.loc[1, 'date']) |                             ohlcv_history.loc[df_len, 'close'] + 0.01, ohlcv_history.loc[df_len, 'date']) | ||||||
|     with pytest.raises(StrategyError, |     with pytest.raises(StrategyError, | ||||||
|                        match=r"Dataframe returned from strategy.*last date\."): |                        match=r"Dataframe returned from strategy.*last date\."): | ||||||
|         _STRATEGY.assert_df(ohlcv_history, len(ohlcv_history), |         _STRATEGY.assert_df(ohlcv_history, len(ohlcv_history), | ||||||
|                             ohlcv_history.loc[1, 'close'], ohlcv_history.loc[0, 'date']) |                             ohlcv_history.loc[df_len, 'close'], ohlcv_history.loc[0, 'date']) | ||||||
|  |  | ||||||
|     _STRATEGY.disable_dataframe_checks = True |     _STRATEGY.disable_dataframe_checks = True | ||||||
|     caplog.clear() |     caplog.clear() | ||||||
|     _STRATEGY.assert_df(ohlcv_history, len(ohlcv_history), |     _STRATEGY.assert_df(ohlcv_history, len(ohlcv_history), | ||||||
|                         ohlcv_history.loc[1, 'close'], ohlcv_history.loc[0, 'date']) |                         ohlcv_history.loc[2, 'close'], ohlcv_history.loc[0, 'date']) | ||||||
|     assert log_has_re(r"Dataframe returned from strategy.*last date\.", caplog) |     assert log_has_re(r"Dataframe returned from strategy.*last date\.", caplog) | ||||||
|     # reset to avoid problems in other tests due to test leakage |     # reset to avoid problems in other tests due to test leakage | ||||||
|     _STRATEGY.disable_dataframe_checks = False |     _STRATEGY.disable_dataframe_checks = False | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user