我正在开始TDD开发态度,正在为我的django应用程序编写单元测试.我知道固定装置并且知道测试应该执行的方式,但是对于给定的测试,我确实需要在整个数据库上执行它,并且用于10万行数据库的json fixture不是我想要处理的东西此外,这个测试是"只读".
那么问题是如何设置测试套件以在生产数据库上运行?我想这可能就像在某些测试的setUp方法中添加DATABASE_NAME设置一样简单.但是settings.DATABASE_NAME ="prod_db"在运行测试时导致"NameError:全局名称'设置'未定义".此外,http://code.djangoproject.com/ticket/11987中描述了一种风险,您可能会意外删除生产数据库.
那么,如何在生产数据库而不是临时数据库上运行测试套件的单个测试,或者甚至更好的是什么是最佳实践呢?
任何意见提前干杯!
我希望能够使用现有的测试数据库来运行我的测试,并且每次我想运行测试时都不会让Django创建和删除数据库.这可能吗?
我想使用postgres localhost数据库中的数据(已经加载的数据)测试我的视图.我正在使用pyx和pytest-django.
我的问题:如何设置/连接到本地数据库以获取所有数据模型架构和数据本身?或者也许最好使用factory_boy?或者从.sql脚本加载整个数据(如果是,如何)?
我的测试示例:
def test_foo_view(custom_client_login):
response = custom_client_login.get('/foo/bar/123/')
assert response.status_code == 200
assert 'Transaction no. 123' in response.content
Run Code Online (Sandbox Code Playgroud)
但是不是获取状态代码200,而是获得404,这表明测试数据库中没有数据.但是当我午餐runserver并进入该视图时,('localhost:8000/foo/bar/123/')我将获得状态200和html网页以及一些数据.
请帮忙!
我正在使用: