Python 如何使用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_

我正在寻找python 2.7 unittest setUpClass()方法的一些基本示例。我试图在我的模块中测试一些类方法,我已经做到了:

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在运行之前设置的内容。