问题似乎很简单,但不幸的是谷歌有点难以实现.
我的问题是:如何在一个视图中检测到它是否在测试环境中被调用?
#pseudo_code
def my_view(request):
if not request.is_secure() and not TEST_ENVIRONMENT:
return HttpResponseForbidden()
Run Code Online (Sandbox Code Playgroud) 我在基于 FastAPI 的项目中使用Pydantic 设置管理。我有Settings一堂这样的课:
class Settings(BaseSettings):
FOO: str = ''
BAR: int = 0
class Config:
env_file = "path/to/.my_env_file")
env_nested_delimiter = "__"
Run Code Online (Sandbox Code Playgroud)
该文件path/to/.my_env_file包含FOO和BAR值。
在测试期间,我需要有选择地修补Settings,并且我不想从 中读取任何内容path/to/.my_env_file。例如,
path/to/.my_env_file
FOO=i_do_not_wanna_read_this
BAR=100
Run Code Online (Sandbox Code Playgroud)
我的测试文件:
@lru_cache()
def get_settings():
return Settings()
def get_settings_override() -> Settings:
return Settings(
FOO = 'foo'
)
app.dependency_overrides[get_settings] = get_settings_override
Run Code Online (Sandbox Code Playgroud)
我想使用FOO='foo'BAR 的默认值 和 运行测试(即,BAR=0忽略 的内容path/to/.my_env_file。在上面的代码中,我得到FOO='foo'但仍然从(即,)BAR读取path/to/.my_env_fileBAR=100
有没有直接的方法来处理这个问题?
我当前的脚本调用外部脚本来执行某些任务。我想在单元测试中检查到目前为止的代码,但实际上不运行外部脚本。如果代码作为单元测试的一部分运行,是否有某种方法可以告诉脚本有效地跳过以下块?