接口测试
1. 接口测试,也是功能测试。
接口:xml格式,返回的数据通常都是json格式
2. 客户端:html、js、css
Android、object-c、swift
浏览器、app等等
服务端:java、php、python
client server
3. 接口测试:
127.0.0.1:8000/pay?order_id=xxx&money=2699
接口文档包含url、请求方式get/post、请求参数、返回参数
get请求:不需要借助工具,直接用浏览器
url?name=小黑&sex=女&age=18
abc 123
4. cookie、session
cookie存在本地的一个键值对
ymyg_login:219603e81aa3319699d3f17697f8b066
session存在服务端的一个键值对
xssdnr_login : 219603e81aa3319699d3fa7697f8b066
ymyg_login:219603e81aa3319699d3f17697f8b066
5. 总结
测接口的话,要根据接口文档来。
get
post:传cookie、传header、上传文件
post、get请求的区别
http请求:
url?name=xxx
请求头
请求体
1. get请求参数是在url后面的,只有url和请求头,没有请求体;
2. post请求参数是在body里面的,post请求有url、请求头和请求体。
6. 怎么写接口测试用例:可以用excel写文档
7. 怎么用postman做自动化
新建一个Collection,Collection中新建一个Request,get请求用Params传参;post请求用Body传参。
postman参数化:请求中引用使用{{parameter_name}}
参数化文件:第一行是参数名字,跟请求中引用的参数名字对应,下面写参数的值,多个参数用英文逗号分隔
请求需要登陆才能请求到,则一般情况下“Headers”中是需要加cookie参数的。
运行:点击“Runner”-"Choose a collection or folder"中选择要执行的请求,下面Iterations是循环次数,Data中选择参数化文件,“Data File Type”中选择“text/csv”,然后右侧出现“Preview”,点击Preview能看到参数化的值。配置好后点击“Run collectName”就执行了。
检查点:postman请求中有“Tests”标签,在它里面写校验,有固定的格式,常用“Response body:C contains string”
如果校验结果的时候,结果中的数据也是需要参数化的,则把校验的内容放入请求的参数化文件,然后“Tests”中选择“Response body: C contains string”。出现下面:
pm.test("Body matches string", function () {
pm.expect(pm.response.text()).to.include(“”);
});
include中不能直接使用“{{check}}”,这样取不到参数化文件中的check列的值。只能通过函数获取变量的值include(pm.variables.get("check"));这时运行就通过了。
“Run Results”如果更改了请求或校验,则不能使用Retry,要关掉并重新打开Runner。
“Run Results”如果出现“This request does not have any tests.”,说明没有保存请求,要在请求url右侧点击“Save”。
8. 自动化测试:说白了就是写代码帮你测试
用自动化测试工具不能读取数据库运行测试用例,自动生成发送报告。
测试开发:开发一些框架工具
9. python数据类型:
msg="don't worry" #字符串 string
msg2='你长得真"好看"'
msg3='''don't worry,你长得真"好看"'''
age=18 #int类型
score=27.32 #float
print('hello world!')
print("hello world!")
10. if判断
#input接收输入,且都转成string类型
#int()类型转换,把变量转成int类型
#> < >= <= == !=
score=input('请输入成绩:')
print(type(score)) #type()获取数据类型
score=int(score)
if score>=90:
print('优秀')
elif score<90 and score>=80: #加括号也行,(score<90)/(score+1)>5,有运算优先级加最好,美观
print('良好')
elif score>=60 and score<80:
print('及格')
else:
print('不及格')
11. while循环
#猜数字的小游戏,最多猜7次
#1. 随机产生一个数字
#2. 循环7次
#3. 输入一个数字,int
#4. 判断大于还是小于,还是等于。如果是等于,游戏结束break;
#5. 小于,大于,循环次数+1,提示大了还是笑了
import random
number=random.randint(1,100) #随机产生一个1-100之间的整数
count=0
while count<7:
guess=input('请输入一个1-100之间的数字')
guess=int(guess)
count=count+1
if guess>number:
print('猜大了')
continue
elif guess<number:
print('猜小了')
continue
else:
print('恭喜你,猜对了',number)
break
else:
print('错误次数用完了')
#while对应一个else,在循环正常结束之后执行else里面的代码
12. for循环
#count自动从0开始,并且自动加1
# for count in range(5):
# print('添加一个用户')
import random
number=random.randint(1,100) #随机产生一个1-100之间的整数
for count in range(7):
guess=input("请输入一个1-100之间的数字")
guess=int(guess)
if guess > number:
print("猜大了")
continue
elif guess <number:
print("猜小了")
continue
else:
print('恭喜你,猜对了',number)
break
else:
print("错误次数用完了")
13. 字符串格式化
import datetime
msg='欢迎xxx登陆,今天的日期是xxx'
username='test'
# date='2019-07-27'
date=datetime.datetime.today()
# msg='欢迎'+username+'登陆,今天的日期是'+date #效率不高
msg2='欢迎%s登陆,今天的日期是%s' % (username,date) #用了%s,不管后面的变量是inth爱是什么类型的都没有关系
print(msg)
print(msg2)
14. 写一个登陆的程序,最多登陆失败3次,输入账号密码,如果登陆成功,程序结束,提示欢迎xx登陆,今天的日期是xx
登陆失败,重新登陆。要判断输入是否为空,什么也不输入,输入空格都算空。