前提・実現したいこと
python3で書かれたコードを実行すると以下のエラーメッセージはでず正常に動くが、テストコードを実行するとエラーがでる。しかし、print文で変数の中身を確認するとパスは正常に取れているよう見える。
発生している問題・エラーメッセージ
> f = open(sql_path) E FileNotFoundError: [Errno 2] No such file or directory: 'xxx/api/auth/auth.id.sql' ../xxx/common/db/dba.py:28: FileNotFoundError ------------------------------------------------------------------------------------- Captured stdout call -------------------------------------------------------------------------------------- a1<module 'xxx.common.db.dba' from '/Users/xxx/local/xxx/xxx/common/db/dba.py'> a1xxx/api/auth/auth.id.sql ============================================================================== 1 failed, 1 passed in 4.94 seconds ===============================================================================
該当のソースコード(dba.py)
python
1sql_path = 'xxx/api/auth/auth.id.sql', sql_params = {xxx} 2 3 def daccess(sql_path, **sql_params): 4 print('a1'+str(sql_path)) 5 f = open(sql_path)
該当のテストコード(pytest)
from dba import daccess ... ... def test(): sql_path = "xxx/api/auth/auth.id.sql" id_ = 'xxx' print('a1' + str(sql_path)) rows = dba.daccess(sql_path, s1=id_)
色々調査して試してみた結果、疑っていること
pythonコードそのものはちゃんと動くのでpytestで書かれたテストコードのフォルダのディレクトリがpythonコードが実行されるトップディレクトリ(mange.py)ではないため、エラーがでているのかなと推測しています。どのようにpythonコードが実行されるのと同じようにpytestも同じディレクトリで実行できるのかなーと困っています。恐らく、テストコードでとれるsql_pathは、.. /xxx/api/auth/auth.id.sqlという形になるのが正しいでのはと疑っています。この点どう思いますでしょうか?
###追記
ファイルそのものを移動してディレクトリを変更したが、以下のcontextsなるものを追記する必要がありこの以下のURLだけでは使い方と意味がわからないので困っています。
http://flask-sqlalchemy.pocoo.org/2.3/contexts/
self = <SQLAlchemy engine=None>, reference_app = None def get_app(self, reference_app=None): """Helper method that implements the logic to look up an application.""" if reference_app is not None: return reference_app if current_app: return current_app._get_current_object() if self.app is not None: return self.app raise RuntimeError( > 'No application found. Either work inside a view function or push' ' an application context. See' ' http://flask-sqlalchemy.pocoo.org/contexts/.' ) E RuntimeError: No application found. Either work inside a view function or push an application context. See http://flask-sqlalchemy.pocoo.org/contexts/. ../../../.pyenv/versions/3.6.5/lib/python3.6/site-packages/flask_sqlalchemy/__init__.py:912: RuntimeError

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。