Pytest IndexError:元组索引超出范围

问题描述 投票:0回答:1

目前我正在尝试使用 pytest 配置我的 django Rest API。当我尝试使用具有

@pytest.mark.django_db
的模型时,我收到一条错误,指出
tuple index out of range
即使我没有在测试用例中引用任何元组。但是当我不执行任何数据库查询或不使用时一切正常
@pytest.mark.django_db

import pytest
from report_tenant.models import VisualModelTableColumn


@pytest.mark.django_db
def test_visual_model_table_column_table():
    col = Model.objects.create(key_1=1, key_2=1, key_5=1, key_3=1, key_4=1)
    assert True == True

python django-models django-rest-framework pytest pytest-django
1个回答
0
投票

看起来问题可能与您在测试中创建 col 对象的方式有关。由于您使用的是 Model.objects.create 而不是 VisualModelTableColumn.objects.create,因此可能会导致错误。

这是测试代码的更正版本:

import pytest
from report_tenant.models import VisualModelTableColumn

    @pytest.mark.django_db
    def test_visual_model_table_column_table():
        # Use VisualModelTableColumn.objects.create instead of Model.objects.create
        col = VisualModelTableColumn.objects.create(key_1=1, key_2=1, key_5=1, key_3=1, key_4=1)
        assert col is not None  # Add assertion to ensure object creation

创建对象时,确保将 Model 替换为实际模型名称 VisualModelTableColumn。此外,我添加了一个断言来验证对象创建是否成功。根据您的测试要求调整断言。

还有另一种方法

import pytest
from report_tenant.models import VisualModelTableColumn

@pytest.fixture
def create_visual_model_table_column():
    # Fixture to create a VisualModelTableColumn object
    def _create(**kwargs):
        return VisualModelTableColumn.objects.create(**kwargs)
    return _create

@pytest.mark.django_db
def test_visual_model_table_column_table(create_visual_model_table_column):
    # Create a VisualModelTableColumn object using the fixture
    col = create_visual_model_table_column(key_1=1, key_2=2, key_3=3, key_4=4, key_5=5)

    # Test if object is created successfully
    assert col is not None

    # Test individual attributes of the created object
    assert col.key_1 == 1
    assert col.key_2 == 2
    assert col.key_3 == 3
    assert col.key_4 == 4
    assert col.key_5 == 5

    # Test if object exists in the database
    assert VisualModelTableColumn.objects.filter(id=col.id).exists()

    # Test additional conditions or behaviors as needed
    # For example:
# assert col.some_method() == expected_result

我添加了一个夹具 create_visual_model_table_column 来创建具有可自定义属性的 VisualModelTableColumn 对象。测试函数使用此装置创建一个对象,然后执行各种断言来验证其属性、数据库中的存在性以及所需的任何其他行为。根据您的具体要求调整断言和测试逻辑。

© www.soinside.com 2019 - 2024. All rights reserved.