相关疑难解决方法(0)

如何在Django中使用不同的设置进行单元测试?

是否有任何简单的机制来覆盖单元测试的Django设置?我在我的一个模型上有一个管理器,它返回特定数量的最新对象.它返回的对象数由NUM_LATEST设置定义.

如果有人要更改设置,这有可能使我的测试失败.如何覆盖设置setUp()并随后将其恢复tearDown()?如果那是不可能的,有什么方法可以修补方法或模拟设置?

编辑:这是我的经理代码:

class LatestManager(models.Manager):
    """
    Returns a specific number of the most recent public Articles as defined by 
    the NEWS_LATEST_MAX setting.
    """
    def get_query_set(self):
        num_latest = getattr(settings, 'NEWS_NUM_LATEST', 10)
        return super(LatestManager, self).get_query_set().filter(is_public=True)[:num_latest]
Run Code Online (Sandbox Code Playgroud)

管理器用于settings.NEWS_LATEST_MAX切片查询集.如果getattr()设置不存在,则仅用于提供默认值.

testing django settings django-managers

104
推荐指数
9
解决办法
6万
查看次数

Django测试 - 在所有测试中修补对象

我需要MockMixin为我的测试创建一些.它应该包括调用外部源的所有内容的模拟.例如,每次我在管理面板中保存模型时,我都会调用一些远程URL.如果嘲笑并使用那样的话会很好:

class ExampleTestCase(MockedTestCase):
    # tests
Run Code Online (Sandbox Code Playgroud)

因此,每次我在管理员中保存模型时,例如在功能测试中,应用此模拟而不是调用远程URL.

这有可能吗?我能够为1个特定测试做到这一点,这不是问题.但是有一些全局模拟更有用,因为我经常使用它.

python django unit-testing django-testing python-mock

25
推荐指数
3
解决办法
1万
查看次数