python接口自动化测试六:类和方法

# coding:utf-8

import
requests

import
re

from
bs4 import BeautifulSoup

# s
= requests.session()  # 全局的s

def get_token(s):

‘‘‘

fuction: 获取token

args: s 参数 -》s = requests.session()

:return  anti_token 
->{‘X-Anit-Forge-Token‘: ‘xx‘, ‘X-Anit-Forge-Code‘: ‘38515842‘}

‘‘‘

# 局部的s没定义,从外部传入s

url = ‘https://passport.lagou.com/login/login.html‘

h1 = {

"User-Agent": "Mozilla/5.0
(Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0"

}

r1 = s.get(url, headers=h1, verify=False)

# print(r1.text)

soup = BeautifulSoup(r1.content, "html.parser", from_encoding=‘utf-8‘)

tokenCode = {}

try:

t = soup.find_all(‘script‘)[1].get_text()

print(t)

tokenCode[‘X_Anti_Forge_Token‘] = re.findall(r"Token =
‘(.+?)‘"
, t)[0]

tokenCode[‘X_Anti_Forge_Code‘] = re.findall(r"Code =
‘(.+?)‘"
, t)[0]

return tokenCode

except:

print("获取token和code失败")

tokenCode[‘X_Anti_Forge_Token‘] = ""

tokenCode[‘X_Anti_Forge_Code‘] = ""

return tokenCode

def login_lgw(s, anti_token, user, psw):

url2 = ‘https://passport.lagou.com/login/login.json‘

h2 = {

"User-Agent": "Mozilla/5.0
(Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0"
,

"Content-Type": "application/x-www-form-urlencoded;
charset=UTF-8"
,

"X-Requested-With": "XMLHttpRequest",

"X-Anit-Forge-Token": anti_token[‘X_Anti_Forge_Token‘] ,

"X-Anit-Forge-Code": anti_token[‘X_Anti_Forge_Code‘],

"Referer": "https://passport.lagou.com/login/login.html"

}

body ={

"isValidate": "true",

"username": user,

"password": psw,

"request_form_verifyCode": "",

"submit": ""

}

print(s.headers# s的头部

# 更新s的头部

s.headers.update(h2)

print(s.headers)

r2 = s.post(url2, data=body, verify=False)

print(r2.text)

return r2.json()

if __name__ == "__main__":

# 自测的内容

s = requests.session()

token = get_token(s)

print(token)

user = "1232"

psw = "322222"

login_lgw(s, token, user, psw)

# 函数

a = [1, 3, 6, 4, 85, 32, 46]
print(sum(a))   # sum,求和函数

def add():
    a = 1,
    b = 2,
    return a + b
print(add())

def add(a, b)# 都必填
    return a + b
print(add())

def add(a=0, b=0):   # 都非必填
    return a + b
print(add())

def add(a, b=0):    # a必填(必填项放前面)
    return a + b
print(add(1, 3))    # 不指定参数名,按顺序传参
print(add(a=1, b=3))    # 指定参数名,按对应参数传参

def add(a=0, b=0, *args):   # *args可变参数(参数个数可变,不限量)
    return a + b
print(add())

# def add(a, b):
#     # 理解为接口
#     return a+b
# # 入参和出参 API接口
# print(add(1, 2))

# 类和方法

class Count():

    def __init__(self, aaa, bbb):     # 初始化
        # 可以放公共的参数
        print(实例化的时候,会执行init的内容‘)
        self.a = aaa
        self.b = bbb
    # 加了self是全局变量,没加self是局部变量

    def abb(self):    # 类里面的叫方法,不叫函数
        return self.a + self.b

    def abb(self, a, b):    # 类里面的叫方法,不叫函数
        return self.a * self.b

    def aee(self, a, b):
        # self就是对象自己,类本身的实例参数
        self.abb()  # 内部调用时直接self.方法

if __name__==‘__main__‘:    # 下面的代码只在当前脚本运行
    count = Count()     # 把类实例化为对象,此时没有参数,实例化之后才能调用类里面的方法
    count.add(1, 3)     # 调用a对象的add方法

    b = Count(10, 5)
    aa = b.abb()
    print(aa)

# coding:utf-8
import requests

header = {   # 登录抓包获取的头部
        “User-Agent”: “Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0”,
        “Accept”: “*/*”,
        “Accept-Language”: “zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3”,
        “Accept-Encoding”: “gzip, deflate”,
        “Content-Type”: “application/x-www-form-urlencoded; charset=UTF-8”,
        “X-Requested-With”: “XMLHttpRequest”,
        “Content-Length”: “423”,
        “Connection”: “keep-alive”
         
        }

body = {“key1”: “value1”,
        “key2”: “value2”}  # 这里账号密码就是抓包的数据

s = requests.session()
login_url = “http://xxx.login”   # 自己找带token网址
login_ret = s.post(login_url, headers=header, data=body)
# 这里token在返回的json里,可以直接提取
token = login_ret.json()[“token”]   # 先取出来

# 这是登录后发的一个post请求
post_url = “http://xxx”
# 添加token到请求头
header[“token”] = token      # 不一定都在头部,仅供参考
# 如果这个post请求的头部其它参数变了,也可以直接更新
header["Content-Length"]="9"
body1 = {
         "key": "value“
          
         }
post_ret = s.post(post_url, headers=header, data=body1)
print post_ret.content
 

原文地址:https://www.cnblogs.com/zhongyehai/p/9147756.html

时间: 2024-08-27 15:40:22

python接口自动化测试六:类和方法的相关文章

python接口自动化测试(六)-unittest-单个用例管理

前面五节主要介绍了环境搭建和requests库的使用,可以使用这些进行接口请求的发送.但是如何管理接口案例?返回结果如何自动校验?这些内容光靠上面五节是不行的,因此从本节开始我们引入python单元测试框架 unittest,用它来处理批量用例管理,校验返回结果,初始化工作以及测试完成后的环境复原工作等等. 一.单个用例管理起来比较简单,参考如下图,单个用例一般多用在调试的时候: 二.代码如下: # -*- coding:utf-8 -*- # 单个用例执行 # 1.导入模块 import un

颠覆你的Python接口自动化测试,约吗?

课程 一直以来,我都很喜欢收集大家问的比较多的问题,然后一边回答一边整理成文.今天也不例外,只是由一问一答,变成了三问三答. [你问] 我们为什么要做接口测试? [我答] 之前在<测试路上你问我答>系列里写过一篇答疑,详见<接口测试的是什么和为什么?> [你问] Python 语言现在为什么这么火? [我答] 这个问题,其实我的回答未必全面,大家在简书或者任何一个技术论坛搜索一下,很多阐述.推荐下面这篇:Python 为何能坐稳 AI 时代头牌语言? [你问] 老师,我之前看了你写

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

第1章 课程介绍(不要错过)本章主要讲解课程的详细安排.课程学习要求.课程面向用户等,让大家很直观的对课程有整体认知! 第2章 接口测试工具Fiddler的运用本章重点讲解如何抓app\web的http\https请求包.如何模拟请求数据.过滤规则及修改响应数据.如何解决无法抓包问题        以及fiddler接口测试,让大家能应用好工具! 第3章 Requests常见方法实战运用本章重点讲解 get\post请求测试.接口测试中结果处理.上传\下载文件接口测试.请求中header及coo

python接口自动化(响应对象方法)

python接口自动化(响应对象方法) 一.encoding作用 获取请求的编码(在不设置响应编码时,响应的信息默认使用的是请求的编码格式):r.encoding 设置响应的编码:r.encoding='编码格式’ 二.headers作用 获取响应的信息头:r.headers 三.URL作用 获取响应的URL:r.url 四.status_code作用 获取响应的状态码:r.status_code 五.cookise作用 获取响应的cookies信息:r.cookies(返回字典对象) 可以通过

python 接口自动化测试--框架整改(五)

代码结构: 目标架构: 1.用例分析器,自动根据接口的参数,类型生成测试用例 2.数据分析器,自动维护接口参数数据,动态数据自动生成,返回结果自动查询判断 3.核心调用引擎,分SOAP和HTTP两种,调用用例,返回接口调用的结果 4.报告输出,统计用例通过率,错误日志,数据库持久化,持续集成 目前实现功能: 核心调用引擎,数据分析器(demo) 1.用例结构(更新) excel分两个sheet,sheet1中存放用例,结构如下 sheet2中存放测试环境host,接口wsdl地址,接口方法间的映

python接口自动化测试

之前在项目中搞了一套jmeter +jenkins + git + ant接口自动化测试框架,在项目中运行了大半年了,效果还不错, 最近搞了一套requests + unittest + ddt +pymysql + BeautifulReport的接口自动化测试框架, 测试用例在yaml文件中, 支持数据驱动.连数据库查询. 目前框架还不是特别完善,需要在后续的使用中一步步优化,目前尚未使用jenkins做集成, 后续结合jenkins做成持续集成.接口自动化测试框架地址:https://gi

python接口自动化测试 - openpyxl基本使用

前言 当你做接口自动化测试时,测试用例逐渐变多情况下,如果所有测试用例都通过代码管理将会使得代码十分臃肿,而且维护成本会很高: 所以我们一般会通过Excel去管理所有的测试用例,而openpyxl库提供了访问Excel的方法 openpyxl简单介绍 一个Python库,用于读取/写入Excel 2010  xlsx .xlsm .xltx .xltm 文件 不能操作 xls 文件 openpyxl简单概念 Workbook:excel工作表 Sheet:工作表中的一张表 Cell:其中的一个单

python接口自动化测试 - unittest框架基本使用

unittest简单介绍 单元测试框架 还可以适用WEB自动化测试用例的开发与执行 提供丰富的断言方法 官方文档:https://docs.python.org/zh-cn/3/library/unittest.html unittest基础使用 1 # 导入unittest模块 2 import unittest 3 4 5 # 创建单元测试类,继承unittest.TestCase 6 class testCase(unittest.TestCase): 7 8 def setUp(self

python学习:扩展类的方法

一:先看一段小程序 <span style="font-size:18px;"><strong>class person: def __init__(self): print "new person" self.name = "lyl" def setName(self,name): self.name = name def printName(self): print self.name p = person(); p.