类级别的mock.patch.dict-python单元测试
我有一个字典,它看起来像这样,并且是测试类中所有方法所需要的。有没有一种方法可以类级别的mock.patch.dict-python单元测试,python,python-unittest,Python,Python Unittest,我有一个字典,它看起来像这样,并且是测试类中所有方法所需要的。有没有一种方法可以@mock.patch.dict在类级别执行它,而不是在每个方法的顶部执行它。字典设置了一些os.environ变量,如下所示: @mock.patch.dict('os.environ', {'MSSQL_DB_NAME': 'tempdb', 'MSSQL_USERNAME': 'sa', 'MSSQL_
@mock.patch.dict
在类级别执行它,而不是在每个方法的顶部执行它。字典设置了一些os.environ
变量,如下所示:
@mock.patch.dict('os.environ',
{'MSSQL_DB_NAME': 'tempdb',
'MSSQL_USERNAME': 'sa',
'MSSQL_PASSWORD': 'password',
'MSSQL_DSN': 'MYMSSQL'})
@mock.patch("commonutils.connectors.mssql.pyodbc")
def test_connectivity(self, my_pyodbc):
self.db = Database(os.environ['MSSQL_DB_NAME'],
os.environ['MSSQL_DSN'],
os.environ['MSSQL_USERNAME'],
os.environ['MSSQL_PASSWORD'])
您可以在
TestCase
s类级别使用@mock.patch.dict
装饰器:
import unittest
import unittest.mock
import os
@unittest.mock.patch.dict('os.environ', { 'VAR': '1' })
class MyTestCase1(unittest.TestCase):
def test_feature_one(self):
self.assertEqual(os.environ['VAR'], '1')
if __name__ == '__main__':
unittest.main()
或者,如果使用安装程序,可以在setUp
中对其进行修补:
import unittest
import unittest.mock
import os
class MyTestCase1(unittest.TestCase):
@unittest.mock.patch.dict('os.environ', { 'VAR': '1' })
def setUp(self):
print(os.environ['VAR'])
你不用试跑员吗?它必须提供某种设置/拆卸机制。