相关疑难解决方法(0)

TestCase中缺少ROLLBACK会导致multi-db django应用程序中出现唯一的约束违规

我刚开始使用factory_boy django库来测试工厂,并且遇到了重复键约束违规的问题.

test_member_programme.py

from datetime import date, timedelta

from django.test import TestCase

from app.test.factories import MemberFactory, ProgrammeFactory
from app.models.member_programme import MemberProgramme


class MemberProgrammeTestCase(TestCase):

    def member_programme(self):
        yesterday = date.today() - timedelta(days=1)
        return MemberProgramme.objects.create(
                mem=MemberFactory(),
                prg=ProgrammeFactory(),
                date_registered=yesterday)

    def date_registered_should_be_defined_test(self):
        # This test passes
        memprg = self.member_programme()
        assert hasattr(memprg, 'date_registered')

    def date_registered_should_be_in_past_test(self):
        # This test fails
        memprg = self.member_programme()
        assert memprg.date_registered < date.today()
Run Code Online (Sandbox Code Playgroud)

factories.py

class CountryOfOriginFactory(factory.Factory):
    """ Factory class for app.models.CountryOfOrigin
    """
    FACTORY_FOR = CountryOfOrigin

    code = 'UK'
    the_country = 'United Kingdom' …
Run Code Online (Sandbox Code Playgroud)

python django unit-testing factory-boy

5
推荐指数
1
解决办法
980
查看次数

标签 统计

django ×1

factory-boy ×1

python ×1

unit-testing ×1