我一直在开发一个django应用程序,它通过数据库路由器使用多个数据库,如下所示。我想为使用Django Rest Framework开发的apis编写单元测试用例。 class MultiDbRouter(object):
"""
Router for handling multiple database connections
based on the db configs in the request object
"""
def _multi_db(self):
如何将迁移自动应用于数据库测试?
误差
django.db.utils.ProgrammingError: relation "users" does not exist
E LINE 1: ...ers"."phone_confirmed", "users"."last_login" FROM "users" WH...
pytest.ini
[pytest]
DJANGO_SETTINGS_MODULE = ma_saas.settings
addopts = --migra
我有一个“标题”CharField(unique=True)的Django模型。我有一个单元测试,它断言创建具有相同标题的第二个实例会抛出一个IntegrityError。(我用的是pytest和pytest-django。)
我有这样的东西:
class Foo(models.Model):
title = models.CharField(unique=True)
def test_title_is_unique(db):
Foo.objects.create(title='foo')
with pytest.raises(IntegrityErr
我使用生产数据库进行测试(实际上它是docker中的测试数据库)。问题是:如何在此数据库的事务中运行测试。我需要与@pytest.mark.django_db(transaction=True)相同的行为,但与生产数据库相同。 当前设置: conftest.py @pytest.fixture(scope='session')
def django_db_setup():
"""Avoid creating/setting up the test database"""
pass
@pytest.fixtur
我正在尝试编写一个单元测试,它反复调用一个函数,并测试如果它使用相同的输入多次运行会发生什么。该函数的副产品是,在运行时会发出一些警告。这导致代码如下:
with pytest.warns(RuntimeWarning, match='depends on the pytest parametrization'):
output = func(**kwargs)
当我使用pytest.mark.parametrize时,这会变得非常冗长,现在它会导致多个if pytest.warns(...)类型的代码。
我是否可以指定忽略单元测试中仅针对特定行发出的所有警告?像这样的
尝试用django配置pytest,这个项目已经有很多测试不是用pytest编写的(用unittest编写的),但我正在尝试让它们用pytest运行,这样我就可以编写pytest测试,并让它与旧测试一起工作。
我知道pytest-django在django项目的根目录中检查manage.py文件,但是这个项目的manage.py文件不在根目录中,所以我猜这就是为什么当我运行pytest时抛出下面的错误,但是运行pytest并提供一个特定的文件是有效的。如何指定manage.py的位置?因为我在中找不到这个
pytest-django could not find a Django projec
我有一个Django项目,有多个应用程序。每个应用程序都有一组单元测试。我用pytest做我的测试跑步者。我们已经到了想开始编写集成测试的地步。我想知道是否有任何方法来保持命名约定,从而自动发现pytest,但仍然能够(可能通过标志?)运行不同的测试类型。想到的最直观的解决方案是一些测试方法甚至TestCase类的修饰器(类似于JUnit中的类别)。
类似于:
@testtype('unittest')
def test_my_test(self):
# do some testing
@testtype('integration')
def test
我用pytest编写了测试,并使用pytest命令运行它们。我看了看其他的pytest模块,然后遇到了pytest-runner。这到底是干什么用的?
模块的描述如下,请解释..。
Setup scripts can use pytest-runner to add setup.py test support for pytest runner.