相关疑难解决方法(0)

如何在生产数据库上运行django单元测试?

我正在开始TDD开发态度,正在为我的django应用程序编写单元测试.我知道固定装置并且知道测试应该执行的方式,但是对于给定的测试,我确实需要在整个数据库上执行它,并且用于10万行数据库的json fixture不是我想要处理的东西此外,这个测试是"只读".

那么问题是如何设置测试套件以在生产数据库上运行?我想这可能就像在某些测试的setUp方法中添加DATABASE_NAME设置一样简单.但是settings.DATABASE_NAME ="prod_db"在运行测试时导致"NameError:全局名称'设置'未定义".此外,http://code.djangoproject.com/ticket/11987中描述了一种风险,您可能会意外删除生产数据库.

那么,如何在生产数据库而不是临时数据库上运行测试套件的单个测试,或者甚至更好的是什么是最佳实践呢?

任何意见提前干杯!

python django unit-testing

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

如何指定Django Tests使用的数据库而不是每次都构建它?

我希望能够使用现有的测试数据库来运行我的测试,并且每次我想运行测试时都不会让Django创建和删除数据库.这可能吗?

python django unit-testing

14
推荐指数
2
解决办法
7678
查看次数

如何使用带数据的数据库在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网页以及一些数据.

请帮忙!


我正在使用:

  • Django的== 1.7.11
  • pytest == 3.0.6
  • pytest-Django的== 3.1.2
  • TOX == 2.6.0

python django postgresql pytest pytest-django

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