mirror of
https://git.mirrors.martin98.com/https://github.com/langgenius/dify.git
synced 2025-08-16 18:15:55 +08:00
fix: answer node unit tests
This commit is contained in:
parent
90221c0a90
commit
5b5e6e31bf
@ -1,22 +1,83 @@
|
|||||||
|
import time
|
||||||
|
import uuid
|
||||||
from unittest.mock import MagicMock
|
from unittest.mock import MagicMock
|
||||||
|
|
||||||
from core.app.entities.app_invoke_entities import InvokeFrom
|
from core.app.entities.app_invoke_entities import InvokeFrom
|
||||||
|
from core.workflow.entities.node_entities import UserFrom
|
||||||
from core.workflow.entities.variable_pool import VariablePool
|
from core.workflow.entities.variable_pool import VariablePool
|
||||||
from core.workflow.enums import SystemVariable
|
from core.workflow.enums import SystemVariable
|
||||||
|
from core.workflow.graph_engine.entities.graph import Graph
|
||||||
|
from core.workflow.graph_engine.entities.graph_init_params import GraphInitParams
|
||||||
|
from core.workflow.graph_engine.entities.graph_runtime_state import GraphRuntimeState
|
||||||
from core.workflow.nodes.answer.answer_node import AnswerNode
|
from core.workflow.nodes.answer.answer_node import AnswerNode
|
||||||
from core.workflow.nodes.base_node import UserFrom
|
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from models.workflow import WorkflowNodeExecutionStatus
|
from models.workflow import WorkflowNodeExecutionStatus, WorkflowType
|
||||||
|
|
||||||
|
|
||||||
def test_execute_answer():
|
def test_execute_answer():
|
||||||
node = AnswerNode(
|
graph_config = {
|
||||||
|
"edges": [
|
||||||
|
{
|
||||||
|
"id": "start-source-answer-target",
|
||||||
|
"source": "start",
|
||||||
|
"target": "answer",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"nodes": [
|
||||||
|
{
|
||||||
|
"data": {
|
||||||
|
"type": "start"
|
||||||
|
},
|
||||||
|
"id": "start"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"data": {
|
||||||
|
'title': '123',
|
||||||
|
'type': 'answer',
|
||||||
|
'answer': 'Today\'s weather is {{#start.weather#}}\n{{#llm.text#}}\n{{img}}\nFin.'
|
||||||
|
},
|
||||||
|
"id": "answer"
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
graph = Graph.init(
|
||||||
|
graph_config=graph_config
|
||||||
|
)
|
||||||
|
|
||||||
|
init_params = GraphInitParams(
|
||||||
tenant_id='1',
|
tenant_id='1',
|
||||||
app_id='1',
|
app_id='1',
|
||||||
|
workflow_type=WorkflowType.WORKFLOW,
|
||||||
workflow_id='1',
|
workflow_id='1',
|
||||||
|
graph_config=graph_config,
|
||||||
user_id='1',
|
user_id='1',
|
||||||
user_from=UserFrom.ACCOUNT,
|
user_from=UserFrom.ACCOUNT,
|
||||||
invoke_from=InvokeFrom.DEBUGGER,
|
invoke_from=InvokeFrom.DEBUGGER,
|
||||||
|
call_depth=0
|
||||||
|
)
|
||||||
|
|
||||||
|
# construct variable pool
|
||||||
|
variable_pool = VariablePool(
|
||||||
|
system_variables={
|
||||||
|
SystemVariable.FILES: [],
|
||||||
|
SystemVariable.USER_ID: 'aaa'
|
||||||
|
},
|
||||||
|
user_inputs={},
|
||||||
|
environment_variables=[],
|
||||||
|
conversation_variables=[],
|
||||||
|
)
|
||||||
|
variable_pool.add(['start', 'weather'], 'sunny')
|
||||||
|
variable_pool.add(['llm', 'text'], 'You are a helpful AI.')
|
||||||
|
|
||||||
|
node = AnswerNode(
|
||||||
|
id=str(uuid.uuid4()),
|
||||||
|
graph_init_params=init_params,
|
||||||
|
graph=graph,
|
||||||
|
graph_runtime_state=GraphRuntimeState(
|
||||||
|
variable_pool=variable_pool,
|
||||||
|
start_at=time.perf_counter()
|
||||||
|
),
|
||||||
config={
|
config={
|
||||||
'id': 'answer',
|
'id': 'answer',
|
||||||
'data': {
|
'data': {
|
||||||
@ -27,19 +88,11 @@ def test_execute_answer():
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
# construct variable pool
|
|
||||||
pool = VariablePool(system_variables={
|
|
||||||
SystemVariable.FILES: [],
|
|
||||||
SystemVariable.USER_ID: 'aaa'
|
|
||||||
}, user_inputs={}, environment_variables=[])
|
|
||||||
pool.add(['start', 'weather'], 'sunny')
|
|
||||||
pool.add(['llm', 'text'], 'You are a helpful AI.')
|
|
||||||
|
|
||||||
# Mock db.session.close()
|
# Mock db.session.close()
|
||||||
db.session.close = MagicMock()
|
db.session.close = MagicMock()
|
||||||
|
|
||||||
# execute node
|
# execute node
|
||||||
result = node._run(pool)
|
result = node._run()
|
||||||
|
|
||||||
assert result.status == WorkflowNodeExecutionStatus.SUCCEEDED
|
assert result.status == WorkflowNodeExecutionStatus.SUCCEEDED
|
||||||
assert result.outputs['answer'] == "Today's weather is sunny\nYou are a helpful AI.\n{{img}}\nFin."
|
assert result.outputs['answer'] == "Today's weather is sunny\nYou are a helpful AI.\n{{img}}\nFin."
|
||||||
|
Loading…
x
Reference in New Issue
Block a user