[英]mock.patch.dict at class level - python unit test
I have a dictionary which looks like this and is needed needed by all methods in the test class, is there a way to @mock.patch.dict
it at class level rather than doing it at top of each method. 我有一个像这样的字典,测试类中的所有方法都需要它,有没有一种方法可以在类级别@mock.patch.dict
它@mock.patch.dict
而不是在每个方法的顶部进行处理。 The dictionary is set some os.environ
variables as shown here: 字典设置了一些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'])
You can use @mock.patch.dict
decorator at your TestCase
s class level: 您可以在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()
or, if you use setUp, you can patch it in setUp
: 或者,如果您使用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'])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.