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数据驱动测试,优化测试用例代码 ...
随机推荐
- es7,8 临门一脚。
ES7 1.Array.prototype.includes() includes()作用,是查找一个值在不在数组里,若是存在则返回true,不存在返回false. 1.基本用法: ['a', 'b' ...
- 两种方式实现sticky footer绝对底部
一.什么是sticky footer 如果页面内容不够长的时候,页脚块粘贴在视窗底部:如果内容足够长时,页脚块会被内容向下推送,我们看到的效果就如下面两张图这样.这种效果基本是无处不在的,很受欢迎. ...
- 【Leetcode】1340. Jump Game V 【动态规划/记忆性搜索】
Given an array of integers arr and an integer d. In one step you can jump from index i to index: i + ...
- 关于react的一些总结
之前为了学习redux买了一本<深入浅出react和redux>,只看了redux部分.最近重新一遍,还是很有收获,这里结合阅读文档时的一些理解,记下一些初学者可能不太注意的东西. 原则: ...
- ES6常见面试题
1.es5和es6的区别,说一下你所知道的es6 ECMAScript5,即ES5,是ECMAScript的第五次修订,于2009年完成标准化 ECMAScript6,即ES6,是ECMAScript ...
- 01 基础版web框架
01 基础版web框架 服务器server端python程序(基础版): import socket server=socket.socket() server.bind(("127.0.0 ...
- deno+mongo实战踩坑记
自从 deno 1.0 发布以来,有关 deno 的文章很多,大多数都是在讨论怎么安装 deno .deno 有哪些特点 .deno 和 node 有哪些异同.deno是不是 node 的替代品等.咱 ...
- tp隐藏入口文件
[ Apache ] httpd.conf配置文件中加载了mod_rewrite.so模块 AllowOverride None 将None改为 All 把下面的内容保存为.htaccess文件放到应 ...
- mysql新
.数据库服务器:运行数据库管理软件的计算机 .数据库管理软件:MySQL,oracle,db2,sqlserver .库:文件夹 .表:文件 .记录:事物的一系列典型特征:name,age,schoo ...
- 使用PInvoke互操作,让C#和C++愉快的交互优势互补
一:背景 1. 讲故事 如果你常翻看FCL的源码,你会发现这里面有不少方法借助了C/C++的力量让C#更快更强悍,如下所示: [DllImport("QCall", CharSet ...