Есть примерно такой вариант, но вообще есть ряд проблем (неуникальные id, куча onclick'ов и т.д.)
<ol>
<script>
const renderAnswer = (questionId, [id, answer]) => `
<input
type="radio"
name="q${questionId + 1}"
value="${id}"
onClick="Engine(${questionId}, this.value)"
id="test-radio"
/>
${answer}
<br/>
`;
const renderQuestion = (question, id) => `
<li class="test-li">
<span class="quest quote__main">
${question.text}
</span>
<br/>
${
Object
.entries(question.answers)
.map(renderAnswer.bind(null, id))
.join('')
}
`;
questions=[
{answers: {a: 'a option', b: 'b option'}, text: 'foo'},
{answers: {c: 'c option', d: 'd option'}, text: 'boo'},
];
document.writeln(questions.map(renderQuestion).join(''));
</script>
</ol>
P.s. при таком подходе будет кривое форматирование генерируемого кода