Я пытаюсь понять, как использовать библиотеку модульного тестирования qcumber.
у меня есть src/ti.q
sma: {mavg[x; y]}; /simple moving average
и tests/sma.quke
feature sma
before
inputData: 1 2 3 4 5 6 7 8 9 10;
expectedOutput: 1 1.5 2 2.5 3 4 5 6 7 8;
period: 5;
should
expect
.qu.compare[expectedOutput; sma[period;inputData]]
Я запускаю тест через q $AXLIBRARIES_HOME/ws/qcumber.q_ -src ./src/ti.q -test ./tests -color -showAll, который дает
Starting qCumber: q test runner
q)Loading src file: src/ti.q
Running tests: tests
file ti.quke
feature sma
(should)
- fail | (expect)
error: inputData (line 7)
Summary:
0 tests passed
0 benchmarks failed
1 tests failed
0 tests skipped
Очевидно, что есть проблема с моим файлом tests/sma.quke, но я не смог понять, как передать константы из документации в Платформа тестирования для q(.qu). Как мне заставить мой блок expect видеть переменные, определенные в блоке before (если действительно block это то, что требуется)?





Я не уверен, что это предпочтительный подход, но у меня есть над чем поработать,
feature sma
should
expect
inputData: 1 2 3 4 5 6 7 8 9 10;
expectedOutput: 1 1.5 2 2.5 3 4 5 6 7 8;
period: 5;
.qu.compare[expectedOutput; sma[period;inputData]]
Вам необходимо установить переменные в блоке before как глобальные переменные, например:
feature sma
before
.test.inputData: 1 2 3 4 5 6 7 8 9 10;
.test.expectedOutput: 1 1.5 2 2.5 3 4 5 6 7 8;
.test.period: 5;
should
expect
.qu.compare[.test.expectedOutput; sma[.test.period;.test.inputData]]