Невозможно поймать ошибку GraphQL при тестировании django

Я тестирую свой резольвер в graphQl, я работаю с django и библиотекой ariadne. вот тест, который я написал:

def test_check_trigger(self):
        query = """
            query GetTrigeer($id: ID!) {
                trigger(id:$id){
                uuid
                agent
                threshold
                }
            }
        """
        agent = Agent.objects.create(
            user=self.user,
            user_address=self.user_address,
            agent_address=self.agent_address1
        )
        trigger = Trigger.objects.create(
            user=self.user,
            agent=agent,
            pool=self.pool1,
            token=Trigger.TOKEN0,
            threshold=50,
            state=Trigger.ARMED
        )
        trigger_id = agent.uuid #passing wrong value to get error
        variables = {"id": str(trigger_id)}
        with self.assertRaises(GraphQLError,msg="Trigger not found"):
            self.run_graphql_query(
                query=query, variables=variables, token=self.token)

Вот функция, которую я использую для получения ответа от graphql:

def run_graphql_query(self, query, token, variables):
    c = Client(raise_request_exception=True)
    access_token = token["access"]
    AUTHORIZATION_HEADER = "HTTP_AUTHORIZATION"
    AUTHORIZATION_TYPE = "Bearer"
    headers = {AUTHORIZATION_HEADER: f"{AUTHORIZATION_TYPE} {access_token}"}
    r = c.post("/graphql/", data={
        "operations": json.dumps(
            {"query": query, "variables": variables}
        )
    }, **headers)
    return r

и это мой резольвер:

@query.field("trigger")
@convert_kwargs_to_snake_case
def resolve_trigger(_, info, id):
    try:
        return Trigger.objects.get(
            uuid=id,
            agent__user=info.context.get('user'),
            deleted_at__isnull=True,
            agent__deleted_at__isnull=True
        )
    except Trigger.DoesNotExist:
        raise GraphQLError(message="Trigger not found")

Но я не могу поймать ошибку, возможно, я использую неправильный подход, но все, что я хочу сделать, это передать неправильное значение в запрос и сопоставить сообщения об ошибках, как ожидалось, вот сообщение об ошибке, которое я получаю в терминале:

617, in resolve_field
    result = resolve_fn(source, info, **args)
  File "/home/welcome/agents-platform/services/api/api/auth.py", line 12, in resolve_is_authenticated
    result = original_resolver(obj, info, **kwargs)
  File "/home/welcome/.local/share/virtualenvs/api-_WI5du6j/lib/python3.8/site-packages/ariadne/utils.py", line 75, in wrapper
    return func(*args, **convert_to_snake_case(kwargs))
  File "/home/welcome/agents-platform/services/api/stoploss/resolvers.py", line 76, in resolve_trigger
    raise GraphQLError(message="Trigger not found")
  File "/home/welcome/agents-platform/services/api/stoploss/resolvers.py", line 69, in resolve_trigger
    return Trigger.objects.get(
  File "/home/welcome/.local/share/virtualenvs/api-_WI5du6j/lib/python3.8/site-packages/django/db/models/manager.py", line 85, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "/home/welcome/.local/share/virtualenvs/api-_WI5du6j/lib/python3.8/site-packages/django/db/models/query.py", line 439, in get
    raise self.model.DoesNotExist(
graphql.error.graphql_error.GraphQLError: Trigger not found

GraphQL request:3:17
2 |             query GetTrigeer($id: ID!) {
3 |                 trigger(id:$id){
  |                 ^
4 |                 uuid
F........................
======================================================================
FAIL: test_check_trigger (stoploss.tests.ResolverTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/welcome/agents-platform/services/api/stoploss/tests.py", line 1010, in test_check_trigger
    self.run_graphql_query(
AssertionError: GraphQLError not raised : Trigger not found
Вернуться на верх