未来应用方向:UI自动化测试或接口自动化测试发现的Bug可自动录入禅道,带截图与相关报错信息、

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
'''=================================================
@Project -> File :NingMengProject -> PostZentao.py
@IDE :PyCharm
@Author :孤问万古愁
@Date :2020/3/14 13:13
@Desc :
==================================================''' import requests
import hashlib
import re
# 禅道登录流程:
# 1、打开登陆页面的时候页面产生一个zentaosid的唯一标识,以及一个verifyRand随机值
# 2、对输入的密码进行md5加密
# 3、已经加密的密码+verifyRand再一次md5加密
# 4、然后post请求登陆地址根据唯一的zentaosid验密 class GetToken():
"""获取禅道的token值及登录后的cookies""" def __init__(self, username='admin', pwd='admin123456'): # 用户名、密码设置默认值
self.username = username
self.pwd = pwd def get_token(self):
loginUrl = "http://127.0.0.1:8088/zentao/user-login.html"
headers_1 = {"Content-Type": "application/x-www-form-urlencoded"} # 定义headers get_sid = requests.get(loginUrl) # get方法请求登录页面,用于获取SID
get_sid.encoding = 'utf-8'
verifyRand = re.findall("id='verifyRand' value='(\d+)'", get_sid.text)[0] # 获取verifyRand值
SID = get_sid.cookies["zentaosid"]
# print(SID) hlFirst = hashlib.md5()
hlFirst.update(self.pwd.encode(encoding='utf-8')) # 第一次对密码进行加密
# print('Md5 第一次加密结果 = ' + hlFirst.hexdigest())
passwordResult = hlFirst.hexdigest() + verifyRand
# print("passwordResult=" + passwordResult)
hlLast = hashlib.md5()
hlLast.update(passwordResult.encode(encoding='utf-8')) # 第二次加密
# print('Md5 第二次加密结果 = ' + hlLast.hexdigest()) # 定义请求参数body
bodyRequest = {"account": self.username, "password": hlLast.hexdigest(), "passwordStrength": 1,
"referer": "/zentao/", "verifyRand": verifyRand, "keepLogin": 1} # 定义cookies
loginCookies = dict(zentaosid=SID, lang='zh-cn', keepLogin='on')
loginRequest = requests.post(loginUrl, data=bodyRequest, cookies=loginCookies) token = loginRequest.cookies['zp'] # 从cookies中获取token # 测试一下:访问我的地盘页面
test = requests.get("http://127.0.0.1:8088/zentao/my/",cookies=loginRequest.cookies)
# print(test.text)
# print(token)
# # print(loginRequest.text) return token,loginRequest.cookies if __name__ == '__main__':
# GetToken().get_token()
# print(GetToken().get_token())
url="http://127.0.0.1:8088/zentao/product-create.html"
text_1=requests.get(url,cookies=GetToken().get_token()[1]).text
# print(text_1)
uid = re.findall("var kuid = '(.*?)';", text_1)[0]
headers_1 = {"Content-Type": "application/x-www-form-urlencoded"}
body_te="name=&code=&line=0&PO=admin&QD=&RD=&type=normal&status=normal&desc=&acl=open&uid=5e6f56b6cb28f"
body_add_product={"name":"禅道接口自动化","code":"ZenTaoInterface","line":0,"PO":"admin","QD":"","RD":"","type":"normal","status":"normal","desc":"","acl":"open","uid":uid}
result = requests.post(url,data=body_add_product,headers=headers_1,cookies=GetToken().get_token()[1])
print(result.text)

  

Python接口自动化测试脚本-实现禅道登录的更多相关文章

  1. python接口自动化测试七:获取登录的Cookies

    python接口自动化测试七:获取登录的Cookies,并关联到下一个请求   获取登录的cookies:loginCookies = r.cookies 把获取到的cookies传入请求:cooki ...

  2. python+selenium自动化禅道登录测试

    本文以禅道登录测试为例,思路主要分openBrowser.openUrl.findElement.sendVals.checkResult.ReadUserdate六部分 openBrowser de ...

  3. python接口自动化(Cookie_绕过验证码登录)

     python接口自动化(Cookie_绕过验证码登录) 有些登录的接口会有验证码,例如:短信验证码,图形验证码等,这种登录的验证码参数可以从后台获取(或者最直接的可查数据库) 获取不到也没关系,可以 ...

  4. python接口自动化测试二十七:密码MD5加密 ''' MD5加密 ''' # 由于MD5模块在python3中被移除 # 在python3中使用hashlib模块进行md5操作 import hashlib # 待加密信息 str = 'asdas89799,.//plrmf' # 创建md5对象 hl = hashlib.md5() # Tips # 此处必须声明encode # 若写法为

    python接口自动化测试二十七:密码MD5加密   ''' MD5加密 '''# 由于MD5模块在python3中被移除# 在python3中使用hashlib模块进行md5操作import has ...

  5. Python接口自动化测试框架实战 从设计到开发

    第1章 课程介绍(不要错过)本章主要讲解课程的详细安排.课程学习要求.课程面向用户等,让大家很直观的对课程有整体认知! 第2章 接口测试工具Fiddler的运用本章重点讲解如何抓app\web的htt ...

  6. 基于Python接口自动化测试框架+数据与代码分离(进阶篇)附源码

    引言 在上一篇<基于Python接口自动化测试框架(初级篇)附源码>讲过了接口自动化测试框架的搭建,最核心的模块功能就是测试数据库初始化,再来看看之前的框架结构: 可以看出testcase ...

  7. Python接口自动化测试框架: pytest+allure+jsonpath+requests+excel实现的接口自动化测试框架(学习成果)

    废话 最近在自己学习接口自动化测试,这里也算是完成一个小的成果,欢迎大家交流指出不合适的地方,源码在文末 问题 整体代码结构优化未实现,导致最终测试时间变长,其他工具单接口测试只需要39ms,该框架中 ...

  8. python接口自动化测试二十三:文件上传

    # 以禅道为例: 一.创建一个类,类里面写一个登录方法: import requestsclass LoginZentao(): def __init__(self, s): # 初始化 self.s ...

  9. python - 接口自动化测试实战 - case1 - 再次优化版

    本次优化: 1.  各级分Package 2.  封装[ReadExcel]类 3.  封装[ReadConfig]类 4.  封装[GetLog]类 5.  引入ddt数据驱动测试,优化测试用例代码 ...

随机推荐

  1. react 动态渲染echarts折线图,鼠标放大缩小

    //折线图组件import React,{Component} from 'react'; import ReactEcharts from 'echarts-for-react'; class Ec ...

  2. Win32 Sdk 连接Access数据库

    /************************************************************* *** MyWinClass.cpp 创建窗口模板 *** vs2017+ ...

  3. POJ1948 Triangular Pastures

    POJ1948 Triangular Pastures #include <iostream> #include <cmath> using namespace std; ; ...

  4. storm-redis 详解

    多的不说,先来代码分析,再贴我自己写的代码.如果代码有错误,求更正.. 导入两个关键包,其他项目需要的包,大家自己导入了,我pom下的包太多,不好一下扔上来. <dependency> & ...

  5. SDK内本地化处理 localizedStringForKey:value:table:

    参考: 1,https://developer.apple.com/documentation/foundation/nsbundle/1417694-localizedstringforkey 2, ...

  6. poj3683 2-SAT 同上一道

    Priest John's Busiest Day Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 10151   Accep ...

  7. 【pyecharts】地图显示不全

    官网给的解释如下: 自从 0.3.2 开始,为了缩减项目本身的体积以及维持 pyecharts 项目的轻量化运行,pyecharts 将不再自带地图 js 文件. 如用户需要用到地图图表,可自行安装对 ...

  8. python 生成随机字符串

    1.生成随机字符串 #数字+字母+符号 def getRandChar(n): l = [] #sample = '0123456789abcdefghijklmnopqrstuvwxyz!@#$%^ ...

  9. MSC添加shard节点

    1.MSC添加shard节点 mkdir -p /mongodb/38027/conf  /mongodb/38027/log  /mongodb/38027/datamkdir -p /mongod ...

  10. JVM调优总结(六)-新一代的垃圾回收算法

    垃圾回收的瓶颈 传统分代垃圾回收方式,已经在一定程度上把垃圾回收给应用带来的负担降到了最小,把应用的吞吐量推到了一个极限.但是他无法解决的一个问题,就是Full GC所带来的应用暂停.在一些对实时性要 ...