在 Python/Django 中,如何配置默认测试设置?

Posted

技术标签:

【中文标题】在 Python/Django 中,如何配置默认测试设置?【英文标题】:In Python/Django, how do I configure default test settings? 【发布时间】:2020-11-24 02:12:46 【问题描述】:

我正在使用 Python 3.8 和 Django 3。我有以下目录结构...

- manage.py  
+ tests
    - __init__.py  
    - factories.py  
    - test_models.py    
    - test_serializers.py
+ directory
    - test_settings.py

我使用

启动我的测试
python manage.py test --settings=directory.test_settings

以下是我的“test_settings.py”文件的内容...

from .settings import *

class DisableMigrations(object):
    # ref: https://***.com/a/28560805/12578202

    def __contains__(self, item):
        return True

    def __getitem__(self, item):
        return None

如何将上面的测试设置文件配置为默认值,以便我可以通过执行简单的操作来运行测试

python manage.py test

【问题讨论】:

您可以创建自己的测试命令,扩展默认测试命令类,并使用测试设置。 谢谢,但你知道有没有更传统的方法?有点像“pytest”有一个“conftest.py”? 不,我不知道,另一种方法是修改你的manage.py,然后当命令参数为test时切换到你的test_settings.py 【参考方案1】:

并不是说我知道传统的方法,但这里有一个解决方法,方法是编辑您的 manage.py

#!/usr/bin/env python
import os
import sys

if __name__ == "__main__":
    if len(sys.argv) > 1 and sys.argv[1] == 'test':
        os.environ.setdefault("DJANGO_SETTINGS_MODULE", "directory.test_settings")
    else:
        os.environ.setdefault("DJANGO_SETTINGS_MODULE", "yourproject.settings")

...

【讨论】:

以上是关于在 Python/Django 中,如何配置默认测试设置?的主要内容,如果未能解决你的问题,请参考以下文章

龙测技术资料分享Python+Django+Ansible Playbook自动化运维项目实战

为啥我不能使用模型方法作为默认值?无论如何,Python/Django 模型中的 self 是啥?

python--Django视图

【踩坑】linux安装配置django环境踩坑记

python django 站点管理 配置mysql数据库

python+django+gunicorn+nginx的配置