资讯专栏INFORMATION COLUMN

干货,调用api获取禅道需求列表等

zeyu / 1760人阅读

摘要:用于实现单例类,避免多次申请账号密码是否覆盖原会话获取的接口登录的接口请求并返回结果新建会话获取成功登录成功根据获取需求列表并没有依赖太多的库,只用了常用的和模块,调用的接口是从源码中找到的。

最近有用到开源版的禅道系统,版本10.0,为了更方便地获取禅道信息,我参照官方的说明写了禅道api调用的脚本。由于网上能搜到的博客基本没有,我就把自己的成果分享一下。在此申明,此文章内容是我自己原创,并不涉及公司机密,同时请各位请尊重我的劳动成果。

废话不多说,直接上代码再解释吧。

import requests
import json
class Zentao_cli(object):
    session = None   #用于实现单例类,避免多次申请sessionID
    sid = None
    def __init__(self, url, account, password, override = False):
        self.url = url
        self.account = account   #账号
        self.password = password   #密码
        self.session_override = override    #是否覆盖原会话
        self.pages = { 
            "sid": "/index.php?m=api&f=getSessionID&t=json",    #获取sid的接口
            "login": "/index.php?t=json&m=user&f=login&account={0}&password={1}&sid={2}",  #登录的接口
            "get_story_list_by_projectID": "/index.php?t=json&m=story&f=ajaxGetProjectStories&projectID={0}",
            "get_story_list_by_account": "/index.php?"
        }
        self.s = None
        self.sid = None

    def req(self,url):
        #请求并返回结果
        web = self.s.get(url)
        if web.status_code == 200:
            resp = json.loads(web.content)
            if resp.get("status") == "success":
                return True, resp
            else:
                return False, resp

    def login(self):
        if self.s is None:
            if not self.session_override and Zentao_cli.session is not None:
                    self.s = Zentao_cli.session
                    self.sid = Zentao_cli.sid
            else:
                #新建会话
                self.s = requests.session()
                res, resp = self.req(self.url.rstrip("/") + self.pages["sid"])
                if res:
                    print("获取sessionID成功")
                    self.sid = json.loads(resp["data"])["sessionID"]
                    Zentao_cli.sid = self.sid
                    login_res, login_resp = self.req(self.url.rstrip("/") + self.pages["login"].format(self.account, self.password, self.sid))
                    if login_res:
                        print("登录成功")
                        Zentao_cli.session = self.s
            

    def get_story_list_by_projectID(self, projectID):
        #根据projectID获取需求列表
        req_url = self.url.rstrip("/") + self.pages["get_story_list_by_projectID"].format(str(projectID))
        web = self.s.get(req_url)
        if web.status_code == 200:
            resp = json.loads(web.content.decode())
            for k,v in resp.items():
                print(k,v)

if __name__ == "__main__":
    cli = Zentao_cli("http://192.168.xx.xx/zentao", "xxxxxx", "xxxxxx123")
    cli.login()
    cli.get_story_list_by_projectID(17)
    

并没有依赖太多的库,只用了常用的requests和json模块,api调用的接口是从源码中找到的。类初始化的时候只需要传入禅道地址,帐号名,密码,然后调用获取的方法就行了。如果要做更多的操作,比如获取bug列表,提交bug,提交需求,就需要与源码中的函数一一对应写函数传参数进行交互。
如果本文章对您有用别忘了点个赞,加收藏。如果想要更多的函数实现,请在评论区艾特我,或者私信我,另外欢迎找我交流。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/42742.html

相关文章

  • ❤️熬夜7天肝出5万字【禅道/缺陷报告/测试报告/接口测试及用例/Fildder】超详细总结❤️

    目录 一、禅道 一、测试工具背景 二、测试管理工具 三、测试工具介绍 四、禅道介绍 五、禅道操作 7. 创建发布 8. 测试团队 二、缺陷报告 三、测试报告 一、概要 二、测试过程 三、缺陷分析 四、测试总结 四、接口测试以及用例编写 五、Fiddler 好文推荐 一、禅道 一、测试工具背景 当测试环境搭建完成后,测试人员将在自己搭建的环境上执行测试用例,开展测试工作。测试人员在执行测试用例的过...

    oujie 评论0 收藏0
  • 禅道软件的使用

    摘要:引言禅道的使用在其手册中有比较详细的介绍,大家可以参考其中还包括介绍的视频。应用范围禅道主要应用于软件项目的管理。软件完整使用其支持的流程主要按照敏捷开发的流程支持的。扩展机制,几乎可以对禅道的任何地方进行扩展。 ...

    W_BinaryTree 评论0 收藏0
  • 敏捷开发中的文档:要不要写?怎么写?

    摘要:但这并不意味着敏捷开发完全抛弃文档,敏捷开发遵循轻文档,重沟通的原则。把功能点拆分,导入到项目管理软件中,相关人员只需要按照需求目录一条条执行即可,不再需要一页一页的看了。如今的任务看板和燃尽图已经由实物形式转变为项目管理软件。 我们比较熟知的软件项目管理方法是瀑布。其基本流程是需求-> 设计->开发->测试。基本假设只要把每一个环节都做正确,那么最终得到的结果也是正确的。瀑布开发有非...

    zzir 评论0 收藏0
  • 禅道项目管理软件bug过滤脚本

    摘要:新公司使用禅道作管理系统。每次产品上线的时候,所有的测试人员测试出之就就提在禅道上。避免本页跳转导致脚本失效。并给它绑定事件。很多浏览器插件,其实也是在别人的网站上运行自己的脚本实现一些操作。 新公司使用禅道作bug管理系统。每次产品上线的时候,所有的测试人员测试出bug之就就提在禅道上。由于我们公司目前的测试只有一个,就把很多产品拉来凑数。他们分不清bug和需求。所以往往出现的情况是...

    沈俭 评论0 收藏0

发表评论

0条评论

zeyu

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<