python - 如何使用 pytest 在 django 的 unittest 中使用 Foregienkey 对自定义产品模型进行单元测试
问题描述
我正在尝试对具有 pytest 前键的特定模型进行单元测试,但经过大量努力,我仍然面临错误,而且我是单元测试的新手。
错误 :
@pytest.mark.django_db
def test_create_pg(client):
user=PPuseers.objects.create(Uid='6fa459ea-ee8a-3ca4-894e-db77e160355e')
make_pg=PG()
> assert PG.objects.count==0
E assert <bound method BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_method of <django.db.models.manager.Manager object at 0x04E8D220>> == 0
E + where <bound method BaseManager._get_queryset_methods.<locals>.create_method.<locals>.manager_method of <django.db.models.manager.Manager object at 0x04E8D220>> = <django.db.models.manager.Manager object at 0x04E8D220>.count
E + where <django.db.models.manager.Manager object at 0x04E8D220> = PG.objects
PPpgOwner\test\test_views.py:41: AssertionError
我的模型.PY
class PG(models.Model):
pg_id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
pg_Owner = models.ForeignKey(PPuseers, on_delete=models.CASCADE)
pg_name = models.CharField(max_length=255,default='Null')
location = models.CharField(max_length=50,default='Null')
describtion = models.CharField(max_length=10000, default='Null')
pg_main_price = models.IntegerField(default=0)
pg_discount_price = models.IntegerField(default=0,blank=True,null=True)
......
.......
PPusers 模型喜欢这个模型
PP用户模型
class PPuseers(AbstractBaseUser, PermissionsMixin):
Uid = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
email = models.EmailField(verbose_name="email", max_length=554, unique=True)
username = models.CharField(max_length=500, unique=False)
date_joined = models.DateTimeField(verbose_name="Date joined", auto_now_add=True)
last_login = models.DateTimeField(verbose_name="last login", auto_now=True)
is_admin = models.BooleanField(default=False)
......
......
......
我的pytest:
from django import urls
from django.contrib.auth import get_user_model
from django.http import response
from django.urls.base import reverse
from PPCustomer.models import PPuseers
from PPpgOwner.models import PG
@pytest.mark.django_db
def test_create_ppuser(client,ppuser_data):
user=PPuseers.objects.create(Uid='6fa459ea-ee8a-3ca4-894e-db77e160355e')
assert PPuseers.objects.count()==1
@pytest.mark.django_db
def test_create_pg(client):
user=PPuseers.objects.create(Uid='6fa459ea-ee8a-3ca4-894e-db77e160355e')
make_pg=PG()
assert PG.objects.count==0
pg_tester=PG.objects.create(
pg_id='6fa459ea-ee8a-3ca4-894e-db77e160355e',
pg_Owner ='dddddd',
pg_name ='Raise_PG',
describtion = 'all pg descriptions ',
pg_main_price = 43456,
address='my pg _address',
pin=7133872,
)
k=PG.objects.count()==1
assert k.status_code==200
我已经尝试过使用Testcase ,但我也面临这个foregienkey的问题......我对单元测试完全陌生,所以请告诉我我已经完成了waht吗?最好的方法是什么?严重卡在这里所有的帮助都是appriciated。
先感谢您!
解决方案
推荐阅读
- javascript - 在图片加载之前预加载 JS 计算
- node.js - 使用 node.js 和 Express 时,为什么额外的 / 在地址中会中断链接到图像而不是 html 文件?
- sql - 在 dbgrid 中的子选择 SQL 查询列上写入值
- erlang - 如何更改/设置 :mnesia 长生不老药中的文件夹?
- angular - 如何为迁移的域设置角度构建路径?
- javascript - 使用 AM 排序日期和时间 | jQuery中的PM
- amazon-web-services - 如何在 AWS 中为两个 CloudFront 设置 Canary Release?
- c# - 查找下一个日历年第 13 天的星期五
- julia - Julia 1.0 中的逗号任何类型的数字
- c# - Gmaps 异常:无法解析远程名称