3

クエリ db 関数をテストしたい。

import pytest
from account_system.action import my_action
from account_system.models import MyUser

@pytest.mark.django_db
def test_ok_profile():
    req = FakeRequest()
    email = 'tester@example.com'
    MyUser.objects.create_user(
        email=email,
        password="example",
    )
    # query MyUser table and return result
    result = my_action.get_profile(email)
    assert result == 'success'

でも失敗です。

>       assert result == 'success'
E       assert None == 'success'

関数は DB から結果を取得しません。

データベースのデータを確認しましたが、レコードがありません。(例: ユーザーtester@example.com )

テスト用にコードを書き直すには?

または、データベースにデータを保持する方法は?

ありがとうございました、

4

1 に答える 1

0

これがデータベース テストの仕組みです。django_db を設定すると、pytest は使用後にデータをロールバックします。ただし、複数のテストで同じデータを使用する場合は、次のように pytest.fixtures と factory_boy を確認する必要があります。

import factory

class UserFactory(factory.DjangoModelFactory):
    class Meta:
        model = User

@pytest.fixture
def user():
  return UserFactory(email = "bla@bla.com", password = "blabla")

次に、この参照をテスト コードに適用します。

test_test_ok_profile(user):
  assert user.email = "bla@bla.com"
于 2016-06-06T15:24:39.370 に答える