首先感谢您的宝贵时间,对我的英语感到抱歉。
在学习Django时,我用python进行了数年的开发,因此决定开始检查此Framework。而且我得到了一个奇怪的答复。我在编写TestCase时,在Test外部完全可以正常工作。
那是代码:
class BoardTopicsTests(TestCase):
# Hago las acciones necesarias para empezar el test
def setUp(self):
self.board = Board(name="Django", description="Django board.")
# self.board.save()
# Compruebo el status_code 200
def test_board_topics_view_status_code(self):
# self.board.save()
url = reverse("board_topics", kwargs={"pk":1})
response = self.client.get(url)
self.assertEqual(response.status_code, 200)
# Compruebo el status_code 404
def test_board_topics_view_not_found_status_code(self):
url = reverse("board_topics", kwargs={"pk" : 99})
response = self.client.get(url)
self.assertEqual(response.status_code, 404)
# Compruebo que resuelve bien el board
def test_board_topics_url_resolves_board_topics_views(self):
view = resolve("/boards/1/")
self.assertEqual( view.func.__name__, BoardTopics.as_view().__name__ )
如果我将木板保存在setUp中,则方法test_board_topics_view_status_code返回404,如果我将木板保存在方法中,则返回200并通过测试。
我想我缺少了一些东西,因为我认为必须通过setUp方法保存它!
请,有人可以帮忙吗?这只是出于学习目的,因为我想知道那里发生了什么。
如果我在test_board_topics_view_status_code内进行print(self.board.id),它会返回1。
非常感谢您!
答案 0 :(得分:-1)
经过研究后,我提出了解决方案:
@classmethod
def setUpTestData(cls):
Board.objects.create(name="Django", description="Django board.")
代替:
def setUp(self):
self.board = Board(name="Django", description="Django board.")
self.board.save()
它可以工作,但是我试图对另一个类做同样的事情,但404仍然返回...在那个特定的TestCase工作中,在另一个不起作用的情况下,o
我正在做更多研究,如果找到“最终”解决方案,我会回信。
更新:
最后我发现了问题!解决方案是下一个解决方案:
@classmethod
def setUpTestData(cls):
self.board = Board.objects.create(name="Django", description="Django board.")
# Compruebo el status_code 200
def test_board_topics_view_status_code(self):
url = reverse("board_topics", kwargs={"pk":self.board.pk})
response = self.client.get(url)
self.assertEqual(response.status_code, 200)
请注意,在kwarg中,pk的值为 self.board.pk ,而不是(这里是发生错误的地方)硬编码为1 ,因为我们不知道PK是否会成为1!哦,那个愚蠢的错误使我整夜无法入睡。
因此,最后我们可以在下一个继续:
希望答案会有所帮助!
您的S3yk0