繁体   English   中英

类级别的模拟.patch.dict-python单元测试

[英]mock.patch.dict at class level - python unit test

我有一个像这样的字典,测试类中的所有方法都需要它,有没有一种方法可以在类级别@mock.patch.dict@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'])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM