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数据驱动测试,优化测试用例代码 ...
随机推荐
- MySQL 入门(5):复制
摘要 在这篇文章中,我将从MySQL为什么需要主从复制开始讲起,然后会提到MySQL复制的前提,bin log. 在这里会说明三种格式的bin log分别会有什么优缺点. 随后会讲到主从延迟方面的问题 ...
- 如何发布自己用python写的py模块
Python——怎么发布你的Python模块 我们在学习Python的时候,除了用pip安装一些模块之外,有时候会从网站下载安装包下来安装,我也想要把我自己编写的模块做成这样的安装包,该怎么办,如何发 ...
- c++简单string实现
string.h #pragma once class string { public: string(const char* str = nullptr); string(const string& ...
- RabbitMQ应用示例
更多详情参考官方文档:https://www.rabbitmq.com/tutorials/tutorial-six-python.html 参考博客:https://blog.csdn.net/we ...
- redis搭建实录
#!/bin/bash####redis版本为4.2.0,需要php5.6以上才支持,可先将安装包上传到/tools目录. yum -y install wgetyum -y install unzi ...
- 201771010128王玉兰《面向对象程序设计(Java)第十四周学习总结》
第一部分:理论知识总结: (1)Swing 设计模式(Design pattern)是设计者一种流行的 思考设计问题的方法,是一套被反复使用,多数人 知晓的,经过分类编目的,代码设计经验的总结. 使用 ...
- APM 上报信息分析与应用
在入正题之前我们再回顾下它的架构图: 本文章主要分析AMP各索引的作用,与及结合1.7环境上已接入的服务数据对比后,对索引中的主要字段进行解析.文章分为四个小章节. 1.索引类型 apm索引分为四种类 ...
- 二,表格<table>的使用细节
如有不足请不吝赐教!最先接触的布局表格,表格灵活性,加载速度都不如<div>灵活,但是对于萌新来说再定位某些,例如div里面套文字,而刚接触html+css又不懂得那么多使用<spa ...
- Istio VirtualService 虚拟服务
概念及示例 VirtualService 描述了一个或多个用户可寻址目标到网格内实际工作负载之间的映射 . 虚拟服务让您配置如何在服务网格内将请求路由到服务,这基于 Istio 和平台提供的基本的连通 ...
- 前端Json对象与Json字符串互转(4种转换方式)
1>jQuery插件支持的转换方式: $.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符串转换成json对象 2>浏 ...