Python接口自动化测试脚本-实现禅道登录
未来应用方向: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接口自动化测试脚本-实现禅道登录的更多相关文章
- python接口自动化测试七:获取登录的Cookies
python接口自动化测试七:获取登录的Cookies,并关联到下一个请求 获取登录的cookies:loginCookies = r.cookies 把获取到的cookies传入请求:cooki ...
- python+selenium自动化禅道登录测试
本文以禅道登录测试为例,思路主要分openBrowser.openUrl.findElement.sendVals.checkResult.ReadUserdate六部分 openBrowser de ...
- python接口自动化(Cookie_绕过验证码登录)
python接口自动化(Cookie_绕过验证码登录) 有些登录的接口会有验证码,例如:短信验证码,图形验证码等,这种登录的验证码参数可以从后台获取(或者最直接的可查数据库) 获取不到也没关系,可以 ...
- 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 ...
- Python接口自动化测试框架实战 从设计到开发
第1章 课程介绍(不要错过)本章主要讲解课程的详细安排.课程学习要求.课程面向用户等,让大家很直观的对课程有整体认知! 第2章 接口测试工具Fiddler的运用本章重点讲解如何抓app\web的htt ...
- 基于Python接口自动化测试框架+数据与代码分离(进阶篇)附源码
引言 在上一篇<基于Python接口自动化测试框架(初级篇)附源码>讲过了接口自动化测试框架的搭建,最核心的模块功能就是测试数据库初始化,再来看看之前的框架结构: 可以看出testcase ...
- Python接口自动化测试框架: pytest+allure+jsonpath+requests+excel实现的接口自动化测试框架(学习成果)
废话 最近在自己学习接口自动化测试,这里也算是完成一个小的成果,欢迎大家交流指出不合适的地方,源码在文末 问题 整体代码结构优化未实现,导致最终测试时间变长,其他工具单接口测试只需要39ms,该框架中 ...
- python接口自动化测试二十三:文件上传
# 以禅道为例: 一.创建一个类,类里面写一个登录方法: import requestsclass LoginZentao(): def __init__(self, s): # 初始化 self.s ...
- python - 接口自动化测试实战 - case1 - 再次优化版
本次优化: 1. 各级分Package 2. 封装[ReadExcel]类 3. 封装[ReadConfig]类 4. 封装[GetLog]类 5. 引入ddt数据驱动测试,优化测试用例代码 ...
随机推荐
- angular js 删除及多条删除
一.编写service //删除 public int delete(Long id); //多条删除 public int deletes(List<Long> id); 二.编写ser ...
- 以前的一些word的整理
LAMP部署 环境:虚拟机centos7 安装apache: 命令:yum install -y httpd (在执行这个命令时,可能会遇到运行yum时出现/var/run/yun.pid已被锁定,P ...
- Universalimageloader 原图片大小获取
Universalimageloader1.9.5上还没有对外提供获取图片的原大小功能,如果需要获取图片的源大小,可参考stackoverflow上的解决办法 stackoverflow地址 主要实现 ...
- Codeforces 832D(Misha, Grisha and Underground,LCA)
题意:在一棵生成树上,给出了三个点,求三个点之间最大的相交点数,CF难度1900. 题解:求出三个lca,并取深度最大的那个,就是我们要的三岔路口K,然后分别求出K到a,b,c三点的路径长度,取最大值 ...
- 【题解】[SCOI2015]小凸玩矩阵
题目链接 思路:题目要求变相解答一下,求出是否有n-k个数,不大于当前求的第k个数 而每一行每一列只能有一个数,就可以得到一个二分图的思路,边上的权值就是第i行第j列这个数的值 对于答案就是第k大的数 ...
- Redux:action
引入redux之后,代码中对组件state的更新变得规范而可控,不再是分散的一句句setState,而是将组件的state集合在一个单例store中,并以引用的方式获取各自的state. 对于stat ...
- jquery 滚轴滚动 导航定位和锚点定位
自己写的,只测试了ie9+, firefox,chrome 以下js更好 var fixbar={ init:function(){ "use strict"; // 滚轴 导航位 ...
- 太高效了!玩了这么久的Linux,居然不知道这7个终端快捷键!
大家好,我是良许. 作为 Linux 用户,大家肯定在 Linux 终端下敲过无数的命令.有的命令很短,比如:ls .cd .pwd 之类,这种命令大家毫无压力.但是,有些命令就比较长了,比如: $ ...
- tableView的嵌套
1,subTableView需要开启多手势识别,多层tableView都会响应滚动事件(如果底层是scroll 依然会响应,这样滚动tableview时,scroll也会滚动,导致滚动过于灵活)2,通 ...
- Maven系列(一) -- maven仓库的搭建
从今天开始,我要写一个maven系列的文章,以帮助大家来更好的熟悉maven仓库,并且将自己优秀的的代码开源出去,一方面为开源做贡献,另一方面顺便提升自己的知名度,让我们把愉快的开始吧 为什么要搭建m ...