내 Flask 앱을 ​​테스트할 때 'RuntimeError: running Outside of application context'가 나타나는 이유는 무엇입니까?

Barbara Streisand
풀어 주다: 2024-11-11 03:13:02
원래의
727명이 탐색했습니다.

Why Am I Getting

문제 해결 "런타임 오류: 애플리케이션 컨텍스트 외부에서 작업 중"

제공된 코드에서 데이터베이스 메서드에 액세스할 때 예외가 발생합니다. 단위 테스트 파일에서. 특히 test.py 파일에서 "before_request" 함수와 "input_info" 경로를 호출할 때 "RuntimeError: 응용 프로그램 컨텍스트 외부에서 작업 중" 오류가 발생합니다.

이 문제를 해결하고 내부에서 데이터베이스 상호 작용을 활성화하려면 단위 테스트에서는 Flask 애플리케이션 컨텍스트가 올바르게 설정되었는지 확인해야 합니다. Flask 애플리케이션 컨텍스트는 데이터베이스 연결을 포함한 요청별 상태를 관리합니다. 요청 컨텍스트 외부에서 테스트를 실행하는 경우 애플리케이션 컨텍스트를 수동으로 설정해야 합니다.

다음은 필요한 변경 사항을 포함하는 test.py의 수정된 테스트 코드 버전입니다.

from app import app
from app import TestMySQL

class Test(unittest.TestCase):
    def test_connection(self):
        with app.app_context():
            object = TestMySQL()
            object.before_request()
            cursor = g.db.cursor()
            cursor.execute ('CREATE TABLE IF NOT EXISTS testmysql (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, name VARCHAR(40) NOT NULL, \
                     email VARCHAR(40) NOT NULL UNIQUE)')
            cursor.close()
로그인 후 복사

app.app_context() 호출 내에 테스트 코드를 래핑하여 애플리케이션 컨텍스트를 설정하고 필요한 데이터베이스 연결 개체를 사용할 수 있는지 확인합니다. 이렇게 하면 "RuntimeError: 응용 프로그램 컨텍스트 외부에서 작업 중" 예외가 해결되고 단위 테스트 중에 데이터베이스 메서드에 성공적으로 액세스할 수 있습니다.

위 내용은 내 Flask 앱을 ​​테스트할 때 'RuntimeError: running Outside of application context'가 나타나는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿