首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TypeError:超级()参数1必须是类型,而不是MagicMock - azure-devops包。

TypeError:超级()参数1必须是类型,而不是MagicMock - azure-devops包。
EN

Stack Overflow用户
提问于 2021-06-03 12:47:51
回答 1查看 1.6K关注 0票数 4

我正在使用azure-devOps python模块来访问azure来检索一些信息。我使用了下面的代码来设置连接所需的身份验证。

代码语言:javascript
复制
def retrieve_projects_from_organization(self): 
   credentials = BasicAuthentication('', AZURE_PRIVATE_TOKEN)
   self.azure_connection = Connection(base_url=os.environ.get('AZURE_BASE_URL',''),creds=credentials)
   core_client = self.azure_connection.clients_v6_0.get_core_client()
   project_list = []
   projects_response = core_client.get_projects()
   while projects_response is not None:
     for project in projects_response:
        project_list.append(project)

在编写单元测试用例时,我无法模拟连接类,因为它需要BasicAuthentication类型的对象。下面是我的单元测试用例:

代码语言:javascript
复制
def test_retrieve_projects_from_organization(mocker):
    credentials = mocker.patch('msrest.authentication. BasicAuthentication')).return_value
    connection = mocker.patch('azure.devops.connection.Connection').return_value
    core_client = mocker.patch('azure.devops.v6_0.core.CoreClient').return_value
    projects = mocker.patch('azure.devops.v6_0.core.TeamProjectReference').return_value
    connection._creds = type(credentials)
    connection.clients_v6_0.get_core_client.return_value = core_client
    core_client.get_projects.return_value = [projects]

    assert AzureDataFetcher().retrieve_projects_from_organization() == [projects]

我得到以下错误:

TypeError:超级()参数1必须是类型,而不是MagicMock

是否有不同的方法来模拟这个类,或者有一种方法可以绕过API的身份验证。

EN

回答 1

Stack Overflow用户

发布于 2021-07-29 15:47:25

我认为这与您如何指定模拟有关。我也有同样的问题,here

而不是mocker.patch('msrest.authentication.BasicAuthentication'),尝试mocker.patch('your_module.BasicAuthentication')

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67821767

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档