一、自动化分类 (1)接口自动化

python/java+requests+unittest框架来实现 python/java+RF(RobotFramework)框架来实现——对于编程要求不高

(2)Web UI功能自动化

python/java+selenium+unittest+ddt+PO框架来实现 python/java+RFS(RobotFrameWork+Selenium)框架来实现——对于编程要求不高

(3)App自动化

python/java+appnium+unittes框架来实现 python/java+RF(RobotFramework)框架来实现——对于编程要求不高

二、接口自动化与Web自动化的区别

(1)接口自动化是没有界面的,不需要对界面元素定位操作,不需要考虑界面延迟的问题,执行效率更高 (2)接口自动化用的是requests测试库,Web自动化用的selenium测试库 (3)接口自动化的覆盖率可以达到100%(绝大部分的接口都可以实现自动化) Web自动化的覆盖率能达到80-90%算OK(可能会有某些功能是没办法实现自动化的)

三、怎么做接口自动化 3.1、流程 A. 确定业务范围,哪些业务功能的接口可以做自动化——接口自动化的覆盖率可以达到 100% B. 时间进度安排,人员分配 C. 确定自动化测试框架 D. 准备数据——准备接口用例数据 E. 编写接口自动化脚本 3.2、搭建接口自动化测试环境 1、安装python3.x——配置python的环境变量 2、安装PyCharm——python开发工具 3、安装测试库 Requests库—— 提供了丰富的用来发请求,对请求进行处理的API函数 xlrd,xlwt库—— 提供了对Excel文件进行操作的API函数 Pymysql库—— 提供了对Mysql数据库进行操作的API函数 paramsunittest库—— 实现参数化的库 Json库—— 提供了对Json格式的数据进行操作的API函数(python自带的基础库) Re库—— 可以使用这个库中的API函数对HMTL数据进行操作 4.3、准备数据——准备接口用例数据 我们把接口用例数据放入在Excel表格中,因为每一个接口都包含:请求地址,请求方式,请求参数,以及响应数据;所以在Excel表格中按照以下方式来组织我们的接口用例数据,包含以下几个内容: 用例名称,请求地址,请求方式,请求头,请求参数,预期结果(断言) 然后我们会封装一个函数去读取Excel数据,以参数的形式传递到脚本中,具体操作步骤如下: 4.4、编写自动化测试脚本

1、步骤:

A、导包

import requests

B、组织请求参数

url = ‘http://localhost/fw/index.php?ctl=user&act=dologin&fhash=hbUjHVrQIgHkwdMdNGnPrSiIkVBeWcrOvJpmsXgyNuMewKfKGy’

par = {

‘email’: ‘Jason’,

‘user_pwd’: ‘TWlKaGRrRFJrQXJZZlFXYkh5WlNQZ2tpZkFZQlVlUUhyRE5SdndSUGdKanFDTG1LYUYlMjV1NjVCOSUyNXU3RUY0emdwMTIzNDU2JTI1dThGNkYlMjV1NEVGNg==‘,

‘auto_login’: 0,

‘ajax’: 1

}

C、发送请求

res = requests.post(url, data=par)

res = requests.get(url,params=par)

D、提取响应对象中的数据,并做断言

1、提取响应*body*内容**

res.text —— 如果返回的是html格式的数据,使用res.text提取`

res.json() —— 如果后台返回的是json格式的数据,则使用这个API函数来提取`

2、提取响应头***

res.headers

3、提取状态码,响应信息

res.status_code

res.reason

4、提取cookie值

res.cookies()

2、传递请求头

header = {

‘User-Agent’: ‘Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:67.0) Gecko/20100101 Firefox/67.0’,

‘Accept’: ‘application/xml’,

}

res = requests.post(url,data=par,headers=header)

3、传递cookie,token值

通过请求头来传递 —— 直接从浏览器上查看cookie值,并传递到后台。

header = {

‘Cookie’: ‘PHPSESSID=3724b412550a557825da5528dd6198c6’

}

res = requests.post(url,data=par,***headers=heade***r,allow_redirects=False)

发请求的时候通过cookies这个参数来传递

import requests

#1. 登录,获取cookie值

def getCookie():

url = ‘http://localhost/fw/index.php?ctl=user&act=dologin&fhash=hbUjHVrQIgHkwdMdNGnPrSiIkVBeWcrOvJpmsXgyNuMewKfKGy’

par = {

‘email’: ‘Jason’,

‘user_pwd’: ‘TWlKaGRrRFJrQXJZZlFXYkh5WlNQZ2tpZkFZQlVlUUhyRE5SdndSUGdKanFDTG1LYUYlMjV1NjVCOSUyNXU3RUY0emdwMTIzNDU2JTI1dThGNkYlMjV1NEVGNg==‘,

‘auto_login’: 0,

‘ajax’: 1

}

res = requests.post(url, data=par)

return res.cookies

#2. 调用充值接口

#2.1 获取cookie值

cookie = getCookie()

#2.2 发充值请求

url = ‘http://localhost/fw/member.php?ctl=uc_money&act=incharge_done’

par = {

‘check_ol_bl_pay’:’on’,

‘money’:1000,

‘bank_id’:0,

‘memo’:234567890,

‘payment’:5,

}

#发充值请求

res1 = requests.post(url,data=par,cookies=cookie,allow_redirects=False) # 自动重定向的,可以取消自动重定向

print(res1.status_code)

print(res1.reason)

print(res1.headers)

先创建一个session对象,所有请求都使用这个session对象来发送

import requests

#1. 发登录请求

url = ‘http://localhost/fw/index.php?ctl=user&act=dologin&fhash=hbUjHVrQIgHkwdMdNGnPrSiIkVBeWcrOvJpmsXgyNuMewKfKGy’

par = {

‘email’: ‘Jason’,

‘user_pwd’: ‘TWlKaGRrRFJrQXJZZlFXYkh5WlNQZ2tpZkFZQlVlUUhyRE5SdndSUGdKanFDTG1LYUYlMjV1NjVCOSUyNXU3RUY0emdwMTIzNDU2JTI1dThGNkYlMjV1NEVGNg==‘,

‘auto_login’: 0,

‘ajax’: 1

}

#创建一个seesion对象,后期使用这个session对象来发请求

ses = requests.session()

#发登录请求,返回的cookie值会自动化保存到session对象中

response1 = ses.post(url,data=par)

#2. 发充值请求

url = ‘http://localhost/fw/member.php?ctl=uc_money&act=incharge_done’

par = {

‘check_ol_bl_pay’:’on’,

‘money’:1000,

‘bank_id’:0,

‘memo’:234567890,

‘payment’:5,

}

response2 = ses.post(url,data=par,allow_redirects=False)

print(response2.headers)

复制代码

4.5、工程管理维护与优化 1、数据驱动——实现接口用例数据与脚本的分离 我们把接口用例数据放入在Excel表格中,因为每一个接口都包含:请求地址,请求方式,请求参数,以及响应数据;所以在Excel表格中按照以下方式来组织我们的接口用例数据,包含以下几个内容: 用例名称,请求地址,请求方式,请求头,请求参数,预期结果(断言) 然后我们会封装一个函数去读取Excel数据,以参数的形式传递到脚本中,具体操作步骤如下:

安装xlrd库

pip install xlrd

调用xlrd库中的API函数来实现对Excel表格数据的读取

#封装一个读取Excel表格数据的函数

#对Excel表格数据的读取需要用到一个库——xlrd库

import xlrd

def get_data(filename,sheetname):

#1. 打开Excel文件

workbook = xlrd.open_workbook(filename)

#2. 打开Excel文件中的某张表

sheet = workbook.sheet_by_name(sheetname)

#3. 读取表中的内容

list = []

for I in range(1,sheet.nrows):

data = sheet.row_values(i)

list.append(data)

return list

if __name__==‘__main__’:

result = get_data(‘D:\\\\JMeter\\\\1947_Project\\\\cxy-project02\\\\data\\\\接口用例数据.xls’,’登录’)

print(result)

问题解决1

工程问题:

1、没有安装xlrd

2、没有把xlrd导入工程

复制代码

2、unittest框架 作用:用来管理用例,加载用例,执行用例 原理:有几个核心组件 1、测试固件 setUp() 每条用例执行之前,首先会执行这个setUp()方法,在setUp()方法中完成准备初始化工作 比如:连接数据库,后期在将Web UI功能自动化的时候,可以在这里去打开浏览器,配置 tearDown() 每条用例执行完成之后,回收一些资源,比如:关闭数据库,关闭浏览器 2、测试用例 每一条用例需要实现一个用例方法,每个用例方法都必须要以test开头 3、测试套件 执行用例的时候,需要创建测试套件,把用例加入测试套件。 4、加载器 用来加载用例的,把测试用例加入测试套件中 5、执行器 用来执行测试套件中的用例的 如何使用unittest框架来编写用例

#1. 导包

import time

import unittest

import requests

from common.excelUtils import get_data

import paramunittest

#读取excel表格中的数据

list = get_data(‘D:\\\\JMeter\\\\1947_Project\\\\cxy-project02\\\\data\\\\接口用例数据.xls’,’登录’)

#2. 定义一个类,去继承unittest.TestCase

@paramunittest.parametrized(*list) # 引用list中的所有数据

class FwLogin(unittest.TestCase):

def setParameters(self,case_name,url,method,headers,params,assert_info):

‘’’

有多少条用例,这个函数就会执行多少次,每执行一条用例之前先会执行这个函数,把数据提取出来。

:param case_name:

:param url:

:param method:

:param headers:

:param params:

:param assert_info:

:return:

‘’’

self.case_name = str(case_name)

self.url = str(url)

self.method = str(method)

self.headers = str(headers)

self.params = str(params)

self.assert_info = str(assert_info)

#1. 实现一个用例方法

def test_login_case(self):

time.sleep(5)

#1. 组织参数

self.headers= eval(self.headers) # 将字符串转化为字典

self.params = eval(self.params)

#2. 发请求

if self.method == ‘POST’:

response = requests.post(self.url,data=self.params,headers=self.headers)

else:

response = requests.get(self.url,params=self.params,headers=self.headers)

#3. 检查,断言

self.check_result(response)

def check_result(self,response):

‘’’

断言 检查结果的

:param response:

:return:

‘’’

self.assert_info = eval(self.assert_info) #预期结果

try:

self.assertEqual(response.status_code,200,’响应状态码错误’)

self.assertEqual(response.reason,’OK’,’响应的响应码错误’)

self.assertDictEqual(response.json(),self.assert_info,’响应的正文内容不一致!’)

print(‘%s测试用例通过!’ %self.case_name)

except AssertionError as e:

print(‘%s测试用例不通过!%s’ %(self.case_name,e))

if __name__ == ‘__main__’:

unittest.main()

最后为方便大家学习测试,特意给大家准备了一份13G的超实用干货学习资源,涉及的内容非常全面。

包括,软件学习路线图,50多天的上课视频、16个突击实战项目,80余个软件测试用软件,37份测试文档,70个软件测试相关问题,40篇测试经验级文章,上千份测试真题分享,还有2021软件测试面试宝典,还有软件测试求职的各类精选简历,希望对大家有所帮助……

关注我公众号:【程序员小濠】即可获取这份资料了!

我的软件测试交流群:175317069 欢迎各位大佬来群里交流~我也会不定期的发放软件测试资料

如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!

DW的ajax简单应用,你离高薪 offer 只差一个接口自动化入门,我是认真的相关推荐

  1. FPGA找工作写简历,你离高薪offer只差一个高端项目,提供工程源码和技术支持

    这里写目录标题 1.前言 2.你或许很菜 3.工程源码 4.技术支持 5.工程源码和技术支持获取方式 1.前言 如果你是即将毕业的学生或是想转行做FPGA的工程师,你都会面临一个问题,那就是找工作,找 ...

  2. 面试官说我离高薪 offer 只差一个Redis入门,他是认真的

    说起来,可能有些小伙伴会不相信,我是第一次用 Redis,真的.因为公司小,业务量小,Redis 根本派不上用场.不过,最近打算把系统升级一下,顺带把当下时髦的技术入个门,"与时俱进&quo ...

  3. 清华学姐三年的测试成长经历,到最后的喜提高薪offer

    上个礼拜刚好转正了,三个月试用期,五月份换的工作. 现在这份工作,相比上一份确实好很多,比如工资直接涨了一倍,7到14,13薪,朝九晚六,从不加班,项目也简单,包括我在内测试组一共有7个同事,但是每个 ...

  4. jQuery ajax简单案例-验证用户名是否可用

    jQuery ajax简单案例-验证用户名是否可用 HTML <!DOCTYPE html> <html> <head> <meta charset=&quo ...

  5. js中的json ajax,js结合json实现ajax简单实例

    这篇文章主要为大家详细介绍了js结合json实现ajax简单实例的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 前期准备 1.安装wampserver或者其他相似软件来搭建本地集成安装环 ...

  6. ajax排行页面,ajax简单页面

    简单的注册页面运用ajax 主页面 无标题文档 //首先引用jquery文件 登录页面 用户名: 密码: $("#btn").click(function(){ //1.取内容 v ...

  7. ajax如何做到异步交互,1.ajax简单实现异步交互

    效果:点击获取信息 testAjax.jsp: pageEncoding="UTF-8"%> Insert title here function getName(){ va ...

  8. php get验证,PHP+Ajax简单get验证操作示例

    本文实例讲述了PHP+Ajax简单get验证操作.分享给大家供大家参考,具体如下: 1.显示页面代码 index.html XMLHttpRequest独对象使用实例 //第一步创建ajax引擎对象 ...

  9. php全选删除,php+ajax简单实现全选删除的方法

    本文实例讲述了php+ajax简单实现全选删除的方法.分享给大家供大家参考,具体如下: 删除 ↑全选checkbox ↑为删除项,同一命名class为ckb,方便操作,同时将id值巧妙的放入input ...

  10. ajax简单实例代码,分享Ajax创建简单实例代码

    XmlHttp是一套可以在Javascript.VbScript.Jscript等脚本语言中通过http协议传送或从接收XML及其他数据的一套API.XmlHttp最大的用处是可以更新网页的部分内容而 ...

最新文章

  1. Android实现左右滑动效果
  2. 微服务架构下的静态数据通用缓存机制!
  3. Apache Httpd 2.2 配置CA证书,实现Https加密通讯
  4. centos查看当前目录文件夹的大小与tar解压到指定目录
  5. NUC970开发资源
  6. 网上书店 买方数据库
  7. mysql 远程服务器返回错误404_远程服务器返回异常: (404) 未找到
  8. models.ForeignKey( ,on_delete=models.CASCADE)    # 关联外键
  9. python连接mysql数据库简单例子
  10. [转]git使用指南系列
  11. openwrt 遇到问题三 高通9531编译过程
  12. icassp2021论文集下载
  13. 简易看房加权评估案例C++
  14. java web前端邮件,JavaMail:在Web应用上完整接收、解析复杂邮件(转)
  15. 如何让EXCEL公式结果不显示#N/A、#VALUE!的错误
  16. 男人帮所有手机铃声下载|左永邦手机铃声下载,顾小白手机铃声下载,米琪手机铃声下载,艾米手机铃声下载...
  17. MugLife静态照片变3D动画算法研究
  18. php微信公众号报警,Zabbix之微信订阅号平台报警
  19. mysql在购物车中的应用_ajax在购物车中的应用
  20. 搞定计算机网络的常见面试问题

热门文章

  1. 复习,网课,视频回放,太慢怎么办,试试倍速播放吧 (无需下载)
  2. 【RTD】AD7793三线式铂电阻PT100/PT1000应用
  3. java mschart_vb之mschart控件小结
  4. 最近点对问题C语言源代码
  5. python第一周练习 货币转换
  6. win7安装Python所需资源
  7. Linux离线安装rzsz
  8. 【学习笔记】深度学习理论基础
  9. Hive-3.1.3安装配置运行
  10. 矩阵公式(转置公式+求导公式)