gpt4 book ai didi

python - 两个测试单独工作但不能一起工作

转载 作者:太空宇宙 更新时间:2023-11-03 20:57:17 25 4
gpt4 key购买 nike

我在不同的类中有两个测试来测试类似的行为:

  1. 使用 Client() 将产品添加到书签中。
  2. 使用 ORM 将产品添加到书签中。

就个人而言,它正在发挥作用:

./manage.py test compare.test.CompareBookmarkTests

./manage.py test compare.test.CompareAccountTests

当它们一起启动时它们会失败:

./manage.py test

我尝试过:

  • 使用setUptearDown方法
  • 更改类和方法的顺序
  • 在尝试诊断问题时使用 --reverse
  • 使用测试数据库在交互式 django shell 中启动代码行(并且正在运行)
  • 进行一些打印调试,我的对象可以从测试数据库正确调用。
  • 将这两个类合并为一个类

目前我还没有在 stackoverflow 上找到相关答案。 django 文档中都没有。


from django.contrib.auth.models import User
from django.test import TestCase
from .models import Bookmark, Categorie, Product


class CompareBookmarkTests(TestCase):
def setUp(self):
Categorie.objects.create(id_categorie='someid', name='somename')
p = Categorie.objects.get(pk='someid')
p.product_set.create(id_product='1', product_name='orange', categorie='someid')
User.objects.create_user('john@sign.in', 'john@sign.in', 'smith')

def tearDown(self):
User.objects.all().delete()
Categorie.objects.all().delete()
Bookmark.objects.all().delete()

def test_redirect_logged(self):
self.client.login(username='john@sign.in', password='smith')

# Adding product with id 1 in bookmark
response = self.client.get('/compare/1/bookmark/')

# Get added product form bookmark
bookmark = Bookmark.objects.get(pk=1)
self.assertEqual(str(bookmark), 'Bookmark object (1)')
self.assertEqual(response.status_code, 302)


class CompareAccountTests(TestCase):
def setUp/tearDown: [same as previous class]

def test_get_product(self):
self.client.login(username='john@sign.in', password='smith')

user = User.objects.get(pk=1)
product = Product.objects.get(pk='1')

# Adding product with id 1 in bookmark
add_bookmark = Bookmark.objects.create(id_result=product, user=user)

bookmark = Bookmark.objects.get(pk=1)
response = self.client.get('/compare/account/')
self.assertEqual(str(bookmark), 'Bookmark object (1)')
self.assertEqual(response.status_code, 200)

我希望我的两个测试在一起启动时都能成功,但我得到:

compare.models.Bookmark.DoesNotExist:书签匹配查询不存在。

使用 --reverse :

django.contrib.auth.models.User.DoesNotExist

这可能是一个初学者的错误,但我看不到它,感谢您的帮助!

最佳答案

我已经找到了可能导致该问题的原因:

我使用了psql,发现测试数据库没有被删除:

test_myprojet_1
test_myprojet_2
test_myprojet_3
test_myprojet_4
...and so on...

除了一个非常奇怪的:

test_test_test_test_test_test_test_test_test_test_test_myprojec[truncated name]

我在psql中使用:

DROP DATABASE [name];

现在,我的测试按预期运行!

感谢awesoon ,你的建议让我走上了这条路。

关于python - 两个测试单独工作但不能一起工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55933473/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com