【发布时间】:2022-01-19 18:46:36
【问题描述】:
在对一个类进行单元测试时,
class Product:
def __init__(self, name, price):
self.name = name
self.price = price
设置类属性 (#1) 而不是实例属性 (#2) 的基本原理是什么?类与静态与实例属性之间的区别对我来说很清楚(并且在许多其他 SO 帖子中都有说明),但是对于每种属性的优缺点或用例,并不是很明显。
(1)
import unittest
class TestProduct(unittest.TestCase):
@classmethod
def setUp(cls):
cls.product = Product("book", 30)
(2)
import unittest
class TestProduct(unittest.TestCase):
def setUp(self):
self.product = Product("book", 30)
【问题讨论】:
-
没有
set_up方法作为unittest框架的一部分。但是,实例方法setUp将在每个测试方法之前调用,而类方法setUpClass在定义类之后但在任何测试之前将被调用一次方法运行。如果Product是不可变的,则可能无关紧要,但如果它是可变的,则一个测试对类属性所做的更改将对同一运行中的后续测试可见。跨度> -
"如果 Product 是不可变的,这可能无关紧要,但如果它是可变的,则一个测试对类属性所做的更改将对同一运行中的后续测试可见。" 这个评论对我的学习很有帮助!
标签: python unit-testing oop