#python #python-3.x #algorithmic-trading #trading
#python #python-3.x #алгоритмическая торговля #торговля
Вопрос:
Это из книги L earn Алгоритмическая торговля — Себастьен Донадио и Сурав Гош
полный код src >> https://github.com/PacktPublishing/Learn-Algorithmic-Trading/tree/master/Chapter7
Я должен протестировать
с помощью этого
Из TradingStrategy_ut.py Я должен вызвать функцию setUp(), чтобы инициализировать класс TradingStrategy.
class TestMarketSimulator(unittest.TestCase):
def setUp(self):
self.trading_strategy= TradingStrategy()
Я пробовал и не понимаю, как заставить ее работать, потому что класс TradingStrategy, который находится в TradingStrategy.py файл принимает 3 параметра.
class TradingStrategy:
def __init__(self, ob_2_ts, ts_2_om, om_2_ts):
self.orders = []
self.order_id = 0
self.position = 0
self.pnl = 0
self.cash = 10000
self.current_bid = 0
self.current_offer = 0
self.ob_2_ts = ob_2_ts
self.ts_2_om = ts_2_om
self.om_2_ts = om_2_ts
и каждый раз, когда я вызываю функцию setUp (), у меня возникает эта ошибка:
x = TestMarketSimulator()
x.setUp()
Traceback (most recent call last):
File "TradingStrategy_ut.py", line 72, in <module>
x.setUp()
File "TradingStrategy_ut.py", line 9, in setUp
self.trading_strategy= TradingStrategy()
TypeError: __init__() missing 3 required positional arguments: 'ob_2_ts', 'ts_2_om', and 'om_2_ts'
Комментарии:
1. «Из TradingStrategy_ut.py Я должен вызвать функцию setUp(), чтобы инициализировать класс TradingStrategy » — нет, вы этого не делаете.
unittest
обработает вызов этого. Предполагается, что вы полагаетесь наunittest
фреймворк для этого материала.2. Вам не нужно вызывать
setUp
. Вам просто нужно обеспечить правильную реализациюsetUp
, включая вызовTradingStrategy
с правильными параметрами.3. Вы вызываете метод
TradingStrategy
‘s__init__()
, который принимает эти 3 параметра. Похоже, что setup пытается заменить__init__()
любой способ, поэтому вы, вероятно, можете просто полностью удалить функцию4. Спасибо вам всем!!
Ответ №1:
РЕШЕНИЕ:
python3 -m unittest TradingStrategy_ut.py
а также: отредактировано TradingStrategy.py
добавлено None после каждого параметра
class TradingStrategy:
def __init__(self, ob_2_ts=None, ts_2_om=None, om_2_ts=None):
self.orders = []
self.order_id = 0
self.position = 0
self.pnl = 0
self.cash = 10000
self.current_bid = 0
self.current_offer = 0
self.ob_2_ts = ob_2_ts
self.ts_2_om = ts_2_om
self.om_2_ts = om_2_ts