Python 如何使用unittest setUpClass方法()?
我正在寻找python 2.7 unittest setUpClass()方法的一些基本示例。我试图在我的模块中测试一些类方法,我已经做到了:Python 如何使用unittest setUpClass方法()?,python,unit-testing,Python,Unit Testing,我正在寻找python 2.7 unittest setUpClass()方法的一些基本示例。我试图在我的模块中测试一些类方法,我已经做到了: import unittest import sys import mymodule class BookTests(unittest.TestCase): @classmethod def setUpClass(cls): cls._mine = mymodule.myclass('test_
import unittest
import sys
import mymodule
class BookTests(unittest.TestCase):
@classmethod
def setUpClass(cls):
cls._mine = mymodule.myclass('test_file.txt', 'baz')
但是我不知道如何从这里开始使用我刚刚创建的对象编写测试 在您的测试方法中,您现在可以通过self访问全局类atribute
\u mine
。所以你可以这样做:
def test_something(self):
self.assertEqual(self._mine.attribute, 'myAttribute')
如果您使用的是Django 1.8+,则应改用
setUpTestData
方法
然后,您可以在cls
对象上设置任何属性,并通过self
对象上的各个测试方法访问它们
更多信息见。这与直接创建对象有什么不同。ie:def setUp(self):cls_mine=baz()。@Pradyot mine在类上,而您的则在实例上。我个人可能会在setUp方法中设置它,但这只是一个偏好问题。@Pradyot
setUp()
在每个测试方法之前调用,而setUpClass()
在所有测试之前调用一次。许多测试可以利用的任何昂贵操作都应该进入setUpClass()
“通过self访问全局类atribute”,这是通用的Python语言规则吗?setUpTestData比setUpClass有什么优势?如果需要为测试类中的每个测试设置相同的初始数据库状态,setUpTestData应该更快。这是因为它具有数据库事务支持:所有测试将包装在同一事务中,setUpTestData在该事务中只运行一次,然后每个测试将回滚到setUpTestData在运行之前设置的内容。