相关疑难解决方法(0)

django - 如何检测测试环境

问题似乎很简单,但不幸的是谷歌有点难以实现.

我的问题是:如何在一个视图中检测到它是否在测试环境中被调用?

#pseudo_code
def my_view(request):
    if not request.is_secure() and not TEST_ENVIRONMENT:
        return HttpResponseForbidden()
Run Code Online (Sandbox Code Playgroud)

django unit-testing

47
推荐指数
5
解决办法
1万
查看次数

Pydantic 设置管理 + FastAPI:如何在使用 pytest 进行测试期间忽略 .env 文件?

我在基于 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包含FOOBAR值。

在测试期间,我需要有选择地修补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

有没有直接的方法来处理这个问题?

python pytest pydantic fastapi

6
推荐指数
1
解决办法
1834
查看次数

如果在单元测试中则跳过 python 中的代码

我当前的脚本调用外部脚本来执行某些任务。我想在单元测试中检查到目前为止的代码,但实际上不运行外部脚本。如果代码作为单元测试的一部分运行,是否有某种方法可以告诉脚本有效地跳过以下块?

python unit-testing python-unittest

1
推荐指数
1
解决办法
5811
查看次数