接口协议http:、websocket
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之间的异步通信。
在给定的时间范围内的任意时刻,相互推送信息。
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章:如果只测试一个接口,就没有必要用自动化,如果测试多个接口,且接口之间是有联系的,代码的优势就体现出来了。
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
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()和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