类级别的 mock.patch.dict - Python 单元测试



我有一个字典,看起来像这样,测试类中的所有方法都需要它,有没有办法在类级别@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类级别使用@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,则可以在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'])

最新更新