使用python自动在禅道上创建bug,post成功,但是禅道上没有创建bug,如何解决?

该代码示例展示了如何使用Python与ZenTaoAPI进行交互,包括登录、添加Bug和登出操作。在尝试添加Bug时,虽然登录成功,但最终提交Bug失败,因为响应内容重定向到了登录页面,可能的原因是会话管理或请求格式有误。
摘要由CSDN通过智能技术生成
import requests
import re
import time

from requests_toolbelt import MultipartEncoder



class ZenTaoAPI(object):
  def __init__(self):
    self.url = "http://zbox.xxxx.com/zentao/"

    self.headers = {
        'Content-Type': "application/x-www-form-urlencoded"
	  }

    self.data = {
	      "account": "zhaojuan",
	      "password": "Z123"
	  }

    self.s = requests.session()

  def get_session(self):
    url = self.url + 'api-getSessionID.json'
    print("---> get_session:", url);

    self.s.get(url)

  def login(self):
    #url = self.url + "user-login.json"
    url = self.url + "user-login.html"

    response = self.s.post(url, headers=self.headers, data=self.data)
    
    print("------->login response=", response.json)

    if "登录失败" in response.content.decode("utf-8"):
      print("登录失败")
      return;
    else:
      print("登录成功")
      return;

  def logout(self):
    url = self.url + "user-logout.json"

    response = self.s.post(url, headers=self.headers, data=self.data)

    return response.status_code

  def add_bug(self):
    #url = self.url + "bug-create-1-0-moduleID=0.json"
    url = self.url + "bug-create-1-0-moduleID=0.html"

    print("------->add_bug url=", url)

    headers = {
				'Content-Type': "application/x-www-form-urlencoded; charset=utf-8"
		}

    #t = time.asctime(time.localtime(time.time()))

    datas = {
      "product": "7",  # int   所属产品 * 必填
      "openedBuild": "0",  # int | trunk   影响版本 * 必填
      "branch": "2",  # int    分支 / 平台
      "module": "1",  # int    所属模块
      "project": "2",  # int   所属项目
      "assignedTo": "zhanggaoqiang",  # string 指派给
      "deadline": "",  # date 截止日期    日期格式:YY - mm - dd,如:2019 - 01 - 01
      "type": "codeerror",  # string   Bug类型
      "os": "",  # string 操作系统 取值范围: 
      "browser": "",  # string
      "color": "",  # string  颜色格式:  # RGB,如:#3da7f5
      "severity": "3",  # int  严重程度    取值范围:1 | 2 | 3 | 4
      "pri": "3",  # int   优先级 取值范围:0 | 1 | 2 | 3 | 4
      "mailto": "",  # string 抄送给 填写帐号,多个账号用','分隔。
      "keywords": "",  # string   关键词
      "title": "ffffffffff",  # string  Bug标题 * 必填
      "steps": "set bug link in here"  # string   重现步骤
    }

    body2 = MultipartEncoder(
		  fields=[
		      ('product', "7"),
		      ('module', '0'),
		      ('project', ' '),
		      ('openedBuild[]', 'trunk'),
		      ('assignedTo', 'zhaojuan'),
		      ('deadline', ''),
		      ('type', 'codeerror'),
		      ('os', ''),
		      ('browser', ''),
		      ('title', '正确的账号密码登录失败'),  # bug 名称
		      ('color', ''),
		      ('severity', '3'),
		      ('pri', '3'),
		      ('steps', '<p>[步骤]</p>\n<p>输入正确的账号名密码进行完成登录</p>\n<br />\n<p>[结果]</p>\n登录失败<br />\n<p>[期望]</p>\n登录成功<br />'),
		      ('story', '0'),
		      ('task','0'),
		      ('oldTaskID', '0'),
		      ('mailto[]', ''),
		      ('contactListMenu', ''),
		      ('keywords', ''),
		      ('status', 'active'),
		      ('labels[]', ''),
		      ('files[]', ''),
		      ('uid', '602f5eb06ddc9'),
		      ('case', '0'),
		      ('caseVersion', '0'),
		      ('caseVersion', '0'),
		      ('result', '0'),
		      ('testtask', '0'),
		      ],
    )

    #response = self.s.post(url, headers=headers, data=datas)
    #print(response.content.decode('utf-8'))

		#{'Content-Type': body2.content_type}
    response = self.s.post(url, headers={'Content-Type': body2.content_type}, data=body2, timeout=15)
    print("提交bug,响应内容:{}".format(response.text))
    print("-------->response.text:", response.text)
    if '保存成功' in response.text:
      print('bug提交成功!')
    else:
      print('bug提交失败')
    


if __name__ == "__main__":
  bug = ZenTaoAPI()
  bug.get_session()
  bug.login()
  bug.add_bug()
  bug.logout()

结果是:登录成功,但是bug提交失败请大佬给与指点,哪个地方有错误。

登录成功
------->add_bug url= http://zbox.xxxx.com/zentao/bug-create-1-0-moduleID=0.html
提交bug,响应内容:<html><meta charset='utf-8'/><style>body{background:white}</style><script>self.location='/zentao/user-login-L3plbnRhby9idWctY3JlYXRlLTEtMC1tb2R1bGVJRD0wLmh0bWw=.html';

</script>

-------->response.text: <html><meta charset='utf-8'/><style>body{background:white}</style><script>self.location='/zentao/user-login-L3plbnRhby9idWctY3JlYXRlLTEtMC1tb2R1bGVJRD0wLmh0bWw=.html';

</script>

bug提交失败

好的,一个简单的 bug 管理系统,可以使用 Python 和 Flask 框架来实现。下面是一个简单的示例,仅供参考: 1. 安装 Flask 框架 ```shell pip install flask ``` 2. 创建一个名为 `app.py` 的 Python 文件,代码如下: ```python from flask import Flask, render_template, request app = Flask(__name__) # 定义一个空的 bug 列表 bugs = [] # 定义主页面 @app.route('/') def index(): return render_template('index.html', bugs=bugs) # 定义添加 bug 页面 @app.route('/add_bug', methods=['GET', 'POST']) def add_bug(): if request.method == 'POST': # 获取用户交的问题和解决方案 bug = request.form['bug'] solution = request.form['solution'] # 添加到 bug 列表中 bugs.append({'bug': bug, 'solution': solution, 'resolved': False}) return render_template('success.html') else: return render_template('add_bug.html') # 定义解决 bug 页面 @app.route('/resolve_bug/<int:index>', methods=['GET', 'POST']) def resolve_bug(index): bug = bugs[index] if request.method == 'POST': # 获取用户选择的是否解决 resolved = request.form['resolved'] # 更新 bug 的 resolved 属性 bug['resolved'] = (resolved == 'Yes') return render_template('success.html') else: return render_template('resolve_bug.html', bug=bug) if __name__ == '__main__': app.run(debug=True) ``` 3. 创建一个名为 `templates` 的文件夹,将以下三个 HTML 文件放入其中: - `index.html`:用于显示所有的 bug 信息列表 ```html <!DOCTYPE html> <html> <head> <title>Bug Management System</title> </head> <body> <h1>Bug Management System</h1> <table> <tr> <th>Bug</th> <th>Solution</th> <th>Resolved</th> <th>Action</th> </tr> {% for bug in bugs %} <tr> <td>{{ bug.bug }}</td> <td>{{ bug.solution }}</td> <td>{{ 'Yes' if bug.resolved else 'No' }}</td> <td><a href="/resolve_bug/{{ loop.index0 }}">Resolve</a></td> </tr> {% endfor %} </table> <br> <a href="/add_bug">Add Bug</a> </body> </html> ``` - `add_bug.html`:用于添加新的 bug 问题 ```html <!DOCTYPE html> <html> <head> <title>Add Bug</title> </head> <body> <h1>Add Bug</h1> <form method="post"> <label for="bug">Bug:</label> <input type="text" id="bug" name="bug"> <br> <label for="solution">Solution:</label> <input type="text" id="solution" name="solution"> <br> <input type="submit" value="Submit"> </form> </body> </html> ``` - `resolve_bug.html`:用于解决 bug 问题 ```html <!DOCTYPE html> <html> <head> <title>Resolve Bug</title> </head> <body> <h1>Resolve Bug</h1> <p><strong>Bug:</strong> {{ bug.bug }}</p> <p><strong>Solution:</strong> {{ bug.solution }}</p> <form method="post"> <label for="resolved">Resolved:</label> <select id="resolved" name="resolved"> <option value="Yes">Yes</option> <option value="No">No</option> </select> <br> <input type="submit" value="Submit"> </form> </body> </html> ``` 4. 运行程序: ```shell python app.py ``` 5. 打开浏览器,访问 http://localhost:5000 即可使用 bug 管理系统。 该示例仅供了一个基本的 bug 管理系统,实际开发过程中需要考虑更多的细节和功能,例如用户权限、数据存储等。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值