尝试获取TFS工作项时,Python脚本返回错误

时间:2018-09-19 12:28:43

标签: python tfs

我编写了以下Pythin脚本,以尝试收集TFS(Team Foundation Server)工作项数据。下面是我的脚本:-

from tfs import TFSAPI

user="andrew.xxxx"
password="xxxxxxxx"

tfsAddress = "http://man-tfsmig-1:8080/"
print(tfsAddress)

client = TFSAPI(tfsAddress, project="DefaultCollection/xxxxxxxx", user=user, password=password)

work_item = client.get_workitem(28274)

运行代码时,出现以下错误,但是我不知道是什么问题:-

Traceback (most recent call last):
  File ".\TFS_Release_Notes_app.py", line 13, in <module>
    work_item = client.get_workitem(28274)
  File "C:\Python\lib\site-packages\tfs\connection.py", line 70, in get_workitem
    return self.get_workitems(id_, fields)[0]
  File "C:\Python\lib\site-packages\tfs\connection.py", line 80, in get_workitems
    work_items_batch_info = self.__get_workitems(work_items_batch, fields=fields, expand=expand)
  File "C:\Python\lib\site-packages\tfs\connection.py", line 65, in __get_workitems
    object_class=Workitem)
  File "C:\Python\lib\site-packages\tfs\connection.py", line 46, in get_tfs_object
    raw = self.rest_client.send_get(uri=uri, payload=payload, project=project)
  File "C:\Python\lib\site-packages\tfs\connection.py", line 323, in send_get
    return self.__send_request('GET', uri, None, payload=payload, project=project, json=json)
  File "C:\Python\lib\site-packages\tfs\connection.py", line 360, in __send_request
    response.raise_for_status()
  File "C:\Python\lib\site-packages\requests\models.py", line 939, in raise_for_status
    raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 404 Client Error: Not Found for url: http://xxxx-xxxxx-1:8080/DefaultCollection/_apis/wit/workitems?ids=28274&$expand=all&api-version=1.0

2 个答案:

答案 0 :(得分:1)

它告诉您错误:404,未找到。

这意味着您为API提供的URI不正确。

它正在生成以下URI:http://xxxx-xxxxx-1:8080/DefaultCollection/_apis/wit/workitems。验证是否正确。

通常,当TFS通过HTTP在端口8080上运行时,会有一个/tfs/虚拟目录。

答案 1 :(得分:0)

我需要添加以下行进行身份验证:-

# Use NTLM authorization
from requests_ntlm import HttpNtlmAuth
client = TFSAPI("https://tfs.tfs.ru/tfs/", user=user, password=password, auth_type=HttpNtlmAuth)