gpt4 book ai didi

python - Django 中的单元测试。 TestCase类和方法之间的关系是什么

转载 作者:太空宇宙 更新时间:2023-11-04 07:12:55 24 4
gpt4 key购买 nike

我正在用 Django 做一些单元测试。 TestCase类和这个类中的实际方法有什么关系?组织这些内容的最佳做法是什么?

比如我有

class Test(TestCase):
def __init__(self):
...
def testTestA(self):
#test code

def testTestB(self):
#test code

如果我这样组织:

class Test1(TestCase):
def __init__(self):
...
def testTestA(self):
#test code

class Test2(TestCase):
def __init__(self):
...
def testTestB(self):
...

哪个更好,有什么区别?

谢谢!

最佳答案

  1. 您很少为 TestCase 编写 __init__。因此,请从您的单元测试心智模型中剔除这一点。

  2. 您有时会编写setUptearDown。然而,Django 自动执行了其中的大部分操作,您通常只提供一个用于填充测试数据库的静态 fixtures= 变量。

从根本上讲,什么是测试用例?

测试用例是一个“夹具”——被测单元的配置——然后您可以对其进行练习。理想情况下,每个 TestCase 都有一个 setUp 方法来创建一个夹具。每个方法都将对该夹具执行操作并断言该操作有效。

但是。对此没有任何教条。

在许多情况下——尤其是在使用 Django 模型时——并没有那么多有趣的操作。

如果您不在模型中覆盖save,您实际上不需要进行CRUD 测试。您可以(并且应该)信任 ORM。 [如果您不信任它,那么获取一个您确实信任的新框架。]

如果模型类中有几个属性,您可能不想创建不同的方法来测试每个属性。您可能希望在单个 TestCase 的单个方法中按顺序简单地测试它们。

如果,OTOH,你有很多状态变化的非常复杂的类,你将需要一个不同的测试用例来配置一个对象是一个状态,将它操纵到另一个状态并断言所有变化都正确运行。

View Functions,因为它们在技术上不是有状态的,所以不完全符合单元测试的理念。当执行 setUp 以创建处于已知状态的单元时,您正在使用客户端界面逐步完成一些交互以创建处于已知状态的 session 。一旦 session 达到所需状态,您的各种测试方法就会执行该 session ,并断言一切正常。

总结

将 TestCase 视为将在其中运行测试的“设置”或“上下文”。

将每个方法视为“when_X_should_Y”语句。有些人建议使用那种名称(“test_when_x_should_y”),因此该方法将执行“X”并断言“Y”是响应。

关于python - Django 中的单元测试。 TestCase类和方法之间的关系是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2580519/

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