《python接口测试》笔记

接口协议http:、websocket

《python接口测试》的第4章:

http的无状态性,请求与请求间是没有关联的。

http的long poll和ajax轮训实现实时信息的传递。

http1.0时,一个request,只能有一个response,

http1.1后,connection是keep-alive时,一个http链接中,可以发送多个request,每个request会有一个response,但是都是同步的。

http1.0、1.1中,server都是被动的,只有client发起请求后,server才能返回消息。

websocket是html5出现之后,比http更能提升server性能的一种协议。

html5出现后,websocket协议出现,server可以主动出击,client发起一个请求,server可以把所有信息都返回,直到client主动关闭请求。

在请求request 中,携带参数upgrade,就是提升协议,建议把http提升到websocket的。

upgrade:websocket

Connection:upgrade

websocket API是下一代clinet-server之间的异步通信。

在给定的时间范围内的任意时刻,相互推送信息。

 

第5章,python进行接口测试:

 

代码内容:

import requests

url="https://www.baidu.com/"

response=requests.get(url)

print(response.status_code)

print(response.text)

print(response.headers)

print(response.cookies)

 

《接口测试》6章:如果只测试一个接口,就没有必要用自动化,如果测试多个接口,且接口之间是有联系的,代码的优势就体现出来了。

 

 

第8章:总结:

datetime是时间模块,内部有多个方法,now()是取当前时间,today()是取当天时间。datetime.date() 是具体到日期,datetime.datetime是具体到时间,timedelta()是可以进行加减计算日期的。

hashlib是加密模块,可以有多个加密方法:sha1、sha256、sha512等,

hashlib.sha256(abc)是对abc字符串进行sha256加密,

hashlib.digest()是对加密后的内容取出来结果;

 

测试数据不重复的好办法:

random.random()

random.int(a,b)   从a到b,随机取出来一个数,不重复

random.intrange(a,b,c)  从a到b,按照c为增量,取出来的数据

random.choice(a) 是取出a的结果

 

 

import random

e=("小学","中学","大学")

education=random.choice(e)

print(education)

import hashlib
sha512=hashlib.sha512(b"123456")
paasword_sha512=hashlib.hexdigest(sha512)
print(paasword_sha512)


from datetime import *

datetime.date()
datetime.datetime
now=date.now()
print(now)
time.delta()

tomorrow=date.now()+time.delta(days=1)

 import hashlib sha512=hashlib.sha512(b"123456")

#8.3

file=open("file",r)
result=file.readlines()
for i in result:
    x=result.split(",",2)
    a=x[0]
    b=x[1]
    c=x[2]
    print(a,b,c)
file.close()

file=open("file",r)
file.write("aaaa","\n")
file.write("bbbb","\n")
#8.4

##登录及获取返回的cookie信息
username="aaaa"
paasword=hashlib.sha256(username).hexdigest()
url=""
form_data={"username":username,"password":paasword}
login_response=requests.post(url,form_data)
assert login_response.text=="sucess"
c=login_response.cookies

#获取订单id,下订单:

def make_order():
    global c
    url=""
    form_data={"restaurant_name":china,"menu_items_date":"[{'id':165212,'p':'2','q':6}]","delevery_fee":"3.00"}
    make_response=requests.post(url,form_data,cookies=c)
    res=make_response.text
    id=json.loads(res)["order_id"]
#asset是什么?
    assert id !=""
    return id

 

 

Q&A

一:需要的环境,及mac系统的python版本升级:

python3.7版本,如果没有pip,再下载pip:

pip install requests 然后才能导入requests库;

 

mac系统不需要卸载python2.7,直接升级版本到3.7的操作方法:

Mac 系统 OSX 10.12

第1步:下载Python3.7

下载地址如下:https://www.python.org/downloads/

第二步:安装python 3.70

点击下载好的pkg文件进行安装,安装完成之后,python 3.70的默认安装路径如下:

/Library/Frameworks/Python.framework/Versions/3.7

三:alias python="/Library/Frameworks/Python.framework/Versions/3.7/bin/python3.7"

四:然后重启一下Terminal即可;

python -V可以看到python的版本已经变成了3.5

dongfangdeMacBook-Pro:lib dongfang$ pip -V

pip 20.1 from /Library/Python/2.7/site-packages/pip-20.1-py2.7.egg/pip (python 2.7)

python3.7下的pip的命令是pip3:

 pip3 -V

pip 10.0.1 from /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pip (python)

source ~/.bash_profile

 

调试过程中,只看到调试ok,但是不知道是否真的执行正确呀?

#import requests
import unittest
class logintest(unittest.TestCase):
    def testlogin1(self):
        url="http://10.1.16.1:8090/loginNew"
        form={"username":"admin","password":"123456"}
        r=requests.post(url,form)
        selp.assetEqual("r.text","登录成功")
        self.assetEqual("r.status_code", '200 OK')
    def testlogin2(self):
        url="http://10.1.16.1:8090/loginNew"
        form={"username":"admin","password":"123446"}
        r=requests.post(url,form)
        selp.assetEqual("r.text", '密码不正确')
        print(r.status_code)
        print(r.text)
        self.assetEqual("r.status_code", '200 OK')

 

附录

一:python的split()函数

函数:split()

Python中有split()和os.path.split()两个函数,具体作用如下:split():拆分字符串。通过指定分隔符对字符串进行切片,并返回分割后的字符串列表(list)os.path.split():按照路径将文件名和路径分割开

 

一、函数说明

1、split()函数语法:str.split(str="",num=string.count(str))[n]

参数说明:str:表示为分隔符,默认为空格,但是不能为空('')。若字符串中没有分隔符,则把整个字符串作为列表的一个元素num:表示分割次数。如果存在参数num,则仅分隔成 num+1 个子字符串,并且每一个子字符串可以赋给新的变量[n]:表示选取第n个分片

注意:当使用空格作为分隔符时,对于中间为空的项会自动忽略

 

2、os.path.split()函数语法:os.path.split('PATH')

参数说明:

1.PATH指一个文件的全路径作为参数:

2.如果给出的是一个目录和文件名,则输出路径和文件名

3.如果给出的是一个目录名,则输出路径和为空文件名

 

二、分离字符串

string = "www.gziscas.com.cn"

1.以'.'为分隔符

print(string.split('.'))

['www', 'gziscas', 'com', 'cn']

 

2.分割两次

print(string.split('.',2))

['www', 'gziscas', 'com.cn']

 

3.分割两次,并取序列为1的项

print(string.split('.',2)[1])

gziscas

 

4.分割两次,并把分割后的三个部分保存到三个文件

u1, u2, u3 =string.split('.',2)

print(u1)—— www

print(u2)—— gziscas

print(u3) ——com.cn

 

三、分离文件名和路径

import os

print(os.path.split('/dodo/soft/python/'))

('/dodo/soft/python', '')

print(os.path.split('/dodo/soft/python'))

('/dodo/soft', 'python') 

四、实例

str="hello boy<[www.baidu.com]>byebye"

print(str.split("[")[1].split("]")[0])

www.baidu.com

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值