Pytest-django: pytest.mark.django_db setup_module() рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рдЦреЗрд▓рддрд╛ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 14 рд╕рд┐рддре░ 2013  ┬╖  15рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: pytest-dev/pytest-django

рдореЗрд░рд╛ рдкрд░реАрдХреНрд╖рдг рдХреЛрдб рдпрд╣рд╛рдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

import pytest
pytestmark = pytest.mark.django_db

from handy.db import do_sql, fetch_val

def setup_module(fetch_val):
    print 1
    do_sql('''
        create table test (
            id int primary key,
            tag int not null
        );

        insert into test values (1, 10), (2, 20);
    ''')
    print 2

def test_fetch_val():
    print 3
    assert fetch_val('select min(id) from test') == 1

рдФрд░ рдореБрдЭреЗ DatabaseError: relation "test" does not exist рд╕реЗ test_fetch_val() ред рдореБрдЭреЗ рднреА рдорд┐рд▓рддрд╛ рд╣реИ

2
Creating test database for alias 'default'...
3

рдХреИрдкреНрдЪрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЖрдЙрдЯрдкреБрдЯ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рдмрдирдиреЗ рд╕реЗ рдкрд╣рд▓реЗ setup_module() рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

+1 рдореЗрд░реЗ рд▓рд┐рдП, рдмрд╕ рдХреБрдЫ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдбреАрдЬреЗрдиреЛ рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдгреЛрдВ рд╕реЗ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛, рдореЗрд░реЗ рдПрдкреАрдЖрдИ рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛рдмреЗрд╕ рдкреНрд░рд╛рд░рдВрдн рдХрд░рддреЗ рд╕рдордп, рдпрд╣ рдПрдХ рдмрдбрд╝реА рдХрдореА рд╣реИред рдЕрд╕рд▓ рдореЗрдВ рд╕рддреНрд░/рдореЙрдбреНрдпреВрд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдлрд┐рдХреНрд╕реНрдЪрд░ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдПрдХ рдмреБрдирд┐рдпрд╛рджреА рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдХреЛрдИ рд╕реБрдЭрд╛рд╡ рдЗрд╕реЗ рдХреИрд╕реЗ рд╣рд▓ рдХрд░реЗрдВ?

рд╕рднреА 15 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

django_db рдЪрд┐рд╣реНрди рдлрд┐рдХреНрд╕реНрдЪрд░ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдлрд┐рдХреНрд╕реНрдЪрд░ рдФрд░ setup_* рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдмреАрдЪ рд╕рдВрд╡рд╛рдж рдХреИрд╕реЗ рдХрд░реЗрдВред

рдХреНрдпрд╛ рдЖрдк рдПрдХ рд╣реА рдЪреАрдЬрд╝ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдореЙрдбреНрдпреВрд▓ рд╕реНрдХреЛрдкреНрдб рдлрд╝рд┐рдХреНрд╕реНрдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдпрд╛рдиреА рдХреБрдЫ рдРрд╕рд╛

pytestmark = pytest.mark.usefixture('test_table')

@pytest.fixture(scope='module')
def test_table(db):
    do_sql('create table ...')

def test_fetch_val():
    assert fetch_val('...') == 1

рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ред рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдореБрдЭреЗ рдЕрдм Database access not allowed, use the "django_db" mark to enable рд╣реИред
рд╕рд╛рде рд╣реА, test_table() рдирд╣реАрдВ рдЪрд▓рддрд╛ (рдореИрдВрдиреЗ рд╡рд╣рд╛рдВ рдЕрдкрд╡рд╛рдж рдмрдврд╝рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА)

рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдпрд╣ рдЙрдкрдпреЛрдЧ рдЬреБрдбрд╝рдирд╛рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЙрдкрдпреЛрдЧ рд╕реНрдерд┐рд░рддрд╛ рдирд╣реАрдВ:

http://pytest.org/latest/fixture.html#usefixtures

рдЕрдм рдореБрдЭреЗ ScopeMismatchError: You tried to access the 'function' scoped funcarg 'db' with a 'module' scoped request object, involved factories ред

рдкреИрд░рд╛рдореАрдЯрд░ рдкрд░рд┐рдгрд╛рдо рд╕реЗ db рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рд╣рдЯрд╛рдиреЗ рд╕реЗ рд╕реНрдерд┐рд░рддрд╛ рд╡рд┐рдлрд▓рддрд╛ рд╣реЛрддреА рд╣реИ, рд╕реНрдХреЛрдк = 'рдореЙрдбреНрдпреВрд▓' рдХреЛ рд╣рдЯрд╛рдиреЗ рд╕реЗ рдХрд╛рдо рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ test_table() рдкреНрд░рддреНрдпреЗрдХ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдореИрдВ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ред

рдореИрдВрдиреЗ рднреА рдХреЛрд╢рд┐рд╢ рдХреА

pytestmark = pytest.mark.django_db

@pytest.fixture(scope='module')
def test_table():
    do_sql('''
        create table test (
            id int primary key,
            tag int not null
        );

        insert into test values (1, 10), (2, 20);
    ''')

def test_fetch_val(test_table):
    assert fetch_val('select min(id) from test') == 1

def test_fetch_val2(test_table):
    assert fetch_val('select min(id) from test') == 1

рдЬреЛ рд▓рдЧрднрдЧ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рджреВрд╕рд░рд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рд╕реА рддрд░рд╣ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ DatabaseError: relation "test" does not exist ред рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рдкреВрд░реНрдг рд░рд╣рд╕реНрдпред

Django рдФрд░ django_db рдорд╛рд░реНрдХрд░ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдЯреЗрд╕реНрдЯ рдХреЗрд╕ рдЕрдкрдиреЗ рд▓реЗрди-рджреЗрди рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП django_db рдХрд╛ рдЙрдкрдпреЛрдЧ рдореЙрдбреНрдпреВрд▓ рд╕реНрддрд░ рд╕реНрдерд┐рд░рддрд╛ рдХреЗ рд╕рд╛рде рдХрд░рдирд╛ рдЬреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдбреЗрдЯрд╛ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рд╣реИред

рдпрд╣рд╛рдВ рдЖрдкрдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреНрдпрд╛ рд╣реИрдВ? рдЖрдк рдЕрдкрдиреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ "рд╣рд╛рде рд╕реЗ" рдбреЗрдЯрд╛рдмреЗрд╕ рддрд╛рд▓рд┐рдХрд╛ рдХреИрд╕реЗ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ, рди рдХрд┐ Django рдХреЗ рд╕рд╛рде, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА Django рдХреЗ рдкрд░реАрдХреНрд╖рдг рдбреЗрдЯрд╛рдмреЗрд╕/рдкрд░реАрдХреНрд╖рдг рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд░реНрд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ?

рдХреНрдпрд╛ рдЖрдк рдХреЗрд╡рд▓ рдПрдХ рд╕рд╛рджрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд░реНрд╕рд░ рдмрдирд╛рдХрд░ рд╡рд╣ рд╣рд╛рд╕рд┐рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рдЬреЛ рдЖрдк рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

(рдЕрдВрддрд┐рдо рдЙрджрд╛рд╣рд░рдг ScopeMismatchError рд╕реЗ рдмрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдкрд╣рд▓реЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдмрд╛рдж рд▓реЗрди-рджреЗрди рд╡рд╛рдкрд╕ рд▓реЗ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рд╡рд╛рдкрд╕ рд▓реЗ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред)

рдореИрдВ рдХреБрдЫ рдирд┐рдореНрди рд╕реНрддрд░реАрдп рдбреАрдмреА рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЬреЛ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ django рдХрд░реНрд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ - https://github.com/Suor/handy/blob/master/handy/db.py#L40

рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ models.py рдореЗрдВ рдПрдХ рдореЙрдбрд▓ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдлрд┐рд░ рдХреБрдЫ django рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдлрд┐рдХреНрд╕реНрдЪрд░ рдХреЛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рдЧрдбрд╝рдмрдбрд╝ рд╣реЛрдЧрд╛ред рдпрд╣ рдмрд╣реБрдд рд╣реА рдмреБрдирд┐рдпрд╛рджреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░ 3 рдлрд╛рдЗрд▓реЗрдВ рд╣реЛрдВрдЧреАред

рдореИрдВ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХреБрдЫ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рддрд╛рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдЦреЗрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдбреЗрдЯрд╛ рд╣реЛред

рдУрд╣, рдореИрдВрдиреЗ рдЗрд╕реЗ рдХрд╛рдо рдХрд░ рджрд┐рдпрд╛! рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди SQL рдХреЛ begin; ... commit; рдореЗрдВ рд▓рдкреЗрдЯрдиреЗ рд╕реЗ рдорджрдж рдорд┐рд▓реАред

рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рд╕рднреА рдпреБрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред

рдпрд╣ рдПрдХ рд╣реИрдХ рд╣реИ рдЬреЛ рдореБрдЭреЗ рдереЛрдбрд╝рд╛ рдирд╛рдЬреБрдХ рд▓рдЧрддрд╛ рд╣реИред рдореИрдВ рд╢рд╛рдпрдж рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдРрдк рд╕реНрдерд╛рдкрд┐рдд рдХрд░реВрдВрдЧрд╛ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдк рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдк рдЕрдкрдиреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рдкреЙрдкреНрдпреБрд▓реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рдиреА рд╕реЗ рдХреЗрд╡рд▓ Django рдХреЗ ORM рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдФрд░ рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рдлрд╛рдЗрд▓реЗрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рдЗрд╕реЗ рднрд╡рд┐рд╖реНрдп рдХреЗ рдЯреВрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЕрдЧрд░ рдХрд┐рд╕реА рдФрд░ рдХреЛ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдорд┐рд▓рддреА рд╣реИ: setup_function/setup_class/setup_module рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗрдЯрдЕрдк рдХрд░рдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИ рдпрд╛ рдХрд┐рд╕реА рднреА рдЕрдЪреНрдЫреЗ рддрд░реАрдХреЗ рд╕реЗ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ pytest-django рдХрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗрдЯрдЕрдк рдлрд┐рдХреНрд╕реНрдЪрд░ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред

рд╕рдорд╛рдзрд╛рди рдПрдХ рд╕реНрдерд┐рд░рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ рдЬреЛ рдбреАрдмреА рд╕реНрдерд┐рд░рддрд╛ рдХрд╛ рдареАрдХ рд╕реЗ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИ:
http://pytest-django.readthedocs.org/en/latest/helpers.html#db

@pelme
db рд╕реНрдерд┐рд░рддрд╛ рдХреЗ рд╕рд╛рде рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕реЗрдЯрдЕрдк рдХреЛ рдХреЗрд╡рд▓ рдлрд╝рдВрдХреНрд╢рди рд╕реНрдХреЛрдк рдкрд░ рдЪрд▓рд╛рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдХреНрд▓рд╛рд╕, рдореЙрдбреНрдпреВрд▓ рдпрд╛ рд╕рддреНрд░ рдкрд░ рдирд╣реАрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдпрджрд┐ рд╣рдореЗрдВ рдХрдХреНрд╖рд╛ рдкрд░реАрдХреНрд╖рдг рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдХреБрдЫ рд░рд┐рдХреЙрд░реНрдб рднрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

==================================== ERRORS ====================================
___________ ERROR at setup of TestHistoryAlerts.test_one_point_data ____________
ScopeMismatch: You tried to access the 'function' scoped fixture 'db' with a 'session' scoped request object, involved factories
tests/conftest.py:140:  def ts(db)
../../../../.virtualenvs/app/lib/python2.7/site-packages/pytest_django/fixtures.py:158:  def db(request, _django_db_setup, _django_cursor_wrapper)

рдХреНрдпрд╛ рдЗрд╕реЗ рд╕рдВрднрд╛рд▓рдиреЗ рдХрд╛ рдХреЛрдИ рдФрд░ рддрд░реАрдХрд╛ рд╣реИ?

рд╣рд╛рдВ, рдпрд╣ рдбреАрдмреА рдлрд┐рдХреНрд╕реНрдЪрд░ рдХреА рдПрдХ рд╕реАрдорд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдкреАрдЖрд░ #258 рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реНрдерд┐рддрд┐ рдмрдирд╛рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рдиреЗ рдХреА рджрд┐рд╢рд╛ рдореЗрдВ рдХреБрдЫ рдХрд╛рдо рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рдХрдХреНрд╖рд╛/рдореЙрдбреНрдпреВрд▓/рд╕рддреНрд░ рдХреНрд╖реЗрддреНрд░ рд╕реЗ рдмрдВрдзреЗ рд╣реИрдВред

рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдХрдард┐рди рдпрд╣ рдореБрджреНрджрд╛ рдмрд╣реБрдд рдкреБрд░рд╛рдирд╛ рд╣реИ, рдореИрдВрдиреЗ pytest рдФрд░ pytest-django рд╕рд╛рде рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдвреВрдВрдврдирд╛ рдЙрдкрдпреЛрдЧреА рдкрд╛рдпрд╛ рд╣реИред pytest 3.5.0 рдмрд╛рдж рд╕реЗ django_db рдорд╛рд░реНрдХ рдФрд░ module рд▓реЗрд╡рд▓ рдлрд┐рдХреНрд╕реНрдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИред

рдиреАрдЪреЗ 3.5.0 рд╕реЗ рдкрд╣рд▓реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдерд╛ (рдХрдо рд╕реЗ рдХрдо рдпрд╣ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдкреИрджрд╛ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рдерд╛)ред

@pytest.fixture(scope='module')
def user():
    return User.objects.create(...)

@pytest.mark.django_db
def test_some_case(user):
    pass

3.5.0 рдпрд╣ рдмрдврд╝ рдЬрд╛рддрд╛ рд╣реИ

Failed: Database access not allowed, use the "django_db" mark, or the "db" or "transactional_db" fixtures to enable it.

рд╕рдорд╛рдзрд╛рди scope='module' рдХреЛ рд╣рдЯрд╛рдирд╛ рдерд╛ред

+1 рдореЗрд░реЗ рд▓рд┐рдП, рдмрд╕ рдХреБрдЫ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдбреАрдЬреЗрдиреЛ рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдгреЛрдВ рд╕реЗ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛, рдореЗрд░реЗ рдПрдкреАрдЖрдИ рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛рдмреЗрд╕ рдкреНрд░рд╛рд░рдВрдн рдХрд░рддреЗ рд╕рдордп, рдпрд╣ рдПрдХ рдмрдбрд╝реА рдХрдореА рд╣реИред рдЕрд╕рд▓ рдореЗрдВ рд╕рддреНрд░/рдореЙрдбреНрдпреВрд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдлрд┐рдХреНрд╕реНрдЪрд░ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдПрдХ рдмреБрдирд┐рдпрд╛рджреА рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдХреЛрдИ рд╕реБрдЭрд╛рд╡ рдЗрд╕реЗ рдХреИрд╕реЗ рд╣рд▓ рдХрд░реЗрдВ?

+1

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

AndreaCrotti picture AndreaCrotti  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jedie picture jedie  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ryankask picture ryankask  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

blueyed picture blueyed  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

koxu1996 picture koxu1996  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ