天道酬勤,学无止境

python自动化(五)接口自动化:2.接口测试requests模块

一.requests介绍

  • requests模块是python的第三方库,使用它我们可以非常方便的发起get,post等接口请求。并且获取接口的返回值。在自动化中我们常常使用requests模块来编写接口自动化测试用例。

  • requests的官方文档为:https://docs.python-requests.org/zh_CN/latest/

二.requests详解

1.安装

pip install requests

2.常用API

2.1发送请求相关的API

(1) 发送get请求API

requests.get('https://github.com/ouyi-github/') # 不带参数
requests.get(url='http://dict.baidu.com/s', params={'wd':'python','from':'zici'}) # 带参数。方式1
requests.get(url='https://dict.baidu.com/s?wd=python&from=zici') # 带参数。方式2

(2)发送post请求API

r = requests.post('http://httpbin.org/post', data = {'key':'value'}) #以form表单形式提交数据
r = requests.post('https://api.github.com/some/endpoint', data=json.dumps({'some': 'data'})) # 以json形式提交数据,方式1
r = requests.post('https://api.github.com/some/endpoint', json={'some': 'data'}) # 以json形式提交数据,方式2

# xml格式提交数据
heards = {'Content-type': 'text/xml'}
XML = '<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><Request xmlns="http://tempuri.org/"><jme><JobClassFullName>WeChatJSTicket.JobWS.Job.JobRefreshTicket,WeChatJSTicket.JobWS</JobClassFullName><Action>RUN</Action><Param>1</Param><HostIP>127.0.0.1</HostIP><JobInfo>1</JobInfo><NeedParallel>false</NeedParallel></jme></Request></soap:Body></soap:Envelope>'
url = 'http://jobws.push.mobile.xxxxxxxx.com/RefreshWeiXInTokenJob/RefreshService.asmx'
r = requests.post(url=url, heards=heards, data=XML)

(3)发送其他请求API

r = requests.put('http://httpbin.org/put', data = {'key':'value'})
r = requests.delete('http://httpbin.org/delete')
r = requests.head('http://httpbin.org/get')
r = requests.options('http://httpbin.org/get')

2.2 获取响应相关的API

r.encoding                       #获取当前的编码
r.encoding = 'utf-8'             #设置编码
r.text                           #以encoding解析返回内容。字符串方式的响应体,会自动根据响应头部的字符编码进行解码。
r.content                        #以字节形式(二进制)返回。字节方式的响应体,会自动为你解码 gzip 和 deflate 压缩。
r.headers                        #以字典对象存储服务器响应头,但是这个字典比较特殊,字典键不区分大小写,若键不存在则返回None
r.status_code                     #响应状态码
r.raw                             #返回原始响应体,也就是 urllib 的 response 对象,使用 r.raw.read()   
r.ok                              # 查看r.ok的布尔值便可以知道是否登陆成功
 #*特殊方法*#
r.json()                         #Requests中内置的JSON解码器,以json形式返回,前提返回的内容确保是json格式的,不然解析出错会抛异常
r.raise_for_status()             #失败请求(非200响应)抛出异常
r.cookies                        # 响应中的cookies

2.3 文件上传API

url = 'http://127.0.0.1:8080/upload'
files = {'file': open('/home/rxf/test.jpg', 'rb')}
r = requests.post(url, files=files)

2.4 请求中添加头部信息

data = {'some': 'data'}
headers = {'content-type': 'application/json',
           'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:22.0) Gecko/20100101 Firefox/22.0'}
           
r = requests.post('https://api.github.com/some/endpoint', data=data, headers=headers)

2.5 请求中添加cookie信息

data = {'some': 'data'}
cookie = {'key':'value'}
r = requests.post('https://api.github.com/some/endpoint',data=data,cookies=cookie)

2.6 复杂数据添加到请求中

在这里插入图片描述
在这里插入图片描述

实战:企业微信添加成员API

第一步:分析企业微信接口文档

https://work.weixin.qq.com/api/doc/90000/90135/90195

第二步:将请求数据写入json文件

{
    "userid": "{{userid}}",
    "name": "{{name}}",
    "department": [1, 2],
    "mobile": "{{phone}}"
}

第三步;在代码中修改json文件内容,并作为请求的数据发送

import requests
import pystache

class TestDemo:
    def test_demo(self):
        with open('data/add_remenber.json','r',encoding='utf-8') as f:
            contect = f.read()
            rewrite = {
                'userid':'ojbkdsb1',
                'name':'ojbkdsbsd2',
                'phone':'13118175697'
            }
            re_contect = pystache.render(contect,rewrite) # 替换内容中的变量,contect为代替换的内容(需要为str),rewrite为替换规则
            print(re_contect)
            url = 'https://qyapi.weixin.qq.com/cgi-bin/user/create?access_token=3pFM-B9TUPfVp1LXzADf91gnk1Nuxlr92AlyZg0QYWF0G8VnXS5OIUOykSLBhAswELF_' \
                  'IcKkZ2cWlRtaXObX0fh6KpWv4-MgdAxtZJ' \
                  'j19zqxnWlHgWQfXeB9i3zPRgVt3Ohb1WPR9kRj72O1QXy9L1z1azQGmE_2RnIIqDcChIKEorbpSWj_ez0iHchE-9dkzIHsDZoMtNDekY3RVvCkyw&debug=1'
            r = requests.post(url,data=re_contect)
            print(r.json())

这样我们可以将复杂的请求数据存放在文件中,在使用代码修改数据内容后使用。

2.7 使用响应中的复杂内容断言

在做接口自动化测试时,有时我们需要使用响应的json或者xml数据作为断言。而有些数据嵌套特别深,这时我们如果从第一层往里取这个数据,会使得表达式特别长。

这时我们可以使用json path来获取json中的数据

(1)json path

安装:

pip install jsonpath
from jsonpath import jsonpath
jsonpath(json_content,'$.store.book[0].price') # 两个参数:json_content就是json内容,'$.store.book[0].price'是jsonpath表达式

JsonPath中的“根成员对象”始终称为$,无论是对象还是数组。

JsonPath表达式可以使用点表示法

$.store.book [0].title

或括号表示法

$['store']['book'][0]['title']
操作说明
$查询根元素。这将启动所有路径表达式。
@当前节点由过滤谓词处理。
*通配符,必要时可用任何地方的名称或数字。
深层扫描。 必要时在任何地方可以使用名称。
.点,表示子节点
[’’ (, ‘’)]括号表示子项
[ (, )]数组索引或索引
[start:end]数组切片操作
[?()]过滤表达式。 表达式必须求值为一个布尔值。

函数可以在路径的尾部调用,函数的输出是路径表达式的输出,该函数的输出是由函数本身所决定的。

函数描述输出
min()提供数字数组的最小值Double
max()提供数字数组的最大值Double
avg()提供数字数组的平均值Double
stddev()提供数字数组的标准偏差值Double
length()提供数组的长度Integer

过滤器是用于筛选数组的逻辑表达式。一个典型的过滤器将是[?(@.age > 18)],其中@表示正在处理的当前项目。 可以使用逻辑运算符&&和||创建更复杂的过滤器。 字符串文字必须用单引号或双引号括起来([?(@.color == ‘blue’)] 或者 [?(@.color == “blue”)]).

操作符描述
==left等于right(注意1不等于’1’)
!=不等于
<小于
<=小于等于
>大于
>=大于等于
=~匹配正则表达式[?(@.name =~ /foo.*?/i)]
in左边存在于右边 [?(@.size in [‘S’, ‘M’])]
nin左边不存在于右边
size(数组或字符串)长度
empty(数组或字符串)为空

实例:

{
    "store": {
        "book": [
            {
                "category": "reference",
                "author": "Nigel Rees",
                "title": "Sayings of the Century",
                "price": 8.95
            },
            {
                "category": "fiction",
                "author": "Evelyn Waugh",
                "title": "Sword of Honour",
                "price": 12.99
            },
            {
                "category": "fiction",
                "author": "Herman Melville",
                "title": "Moby Dick",
                "isbn": "0-553-21311-3",
                "price": 8.99
            },
            {
                "category": "fiction",
                "author": "J. R. R. Tolkien",
                "title": "The Lord of the Rings",
                "isbn": "0-395-19395-8",
                "price": 22.99
            }
        ],
        "bicycle": {
            "color": "red",
            "price": 19.95
        }
    },
    "expensive": 10
}
[$.store.book[*].author]获取json中store下book下的所有author值
[$..author]获取所有json中所有author的值
[$.store.*]store下的所有的东西
[$.store..price]获取json中store下所有price的值
[$..book[2]]获取json中book数组的第3个值
[$..book[-2]]倒数的第二本书
[$..book[0,1]]前两本书
[$..book[:2]]从索引0(包括)到索引2(排除)的所有图书
[$..book[1:2]]从索引1(包括)到索引2(排除)的所有图书
[$..book[-2:]]获取json中book数组的最后两个值
[$..book[2:]]获取json中book数组的第3个到最后一个的区间值
[$..book[?(@.isbn)]]获取json中book数组中包含isbn的所有值
[$.store.book[?(@.price < 10)]]获取json中book数组中price<10的所有值
[`$…book[?(@.price <= $[‘expensive’])]获取json中book数组中price<=expensive的所有值
[$..book[?(@.author =~ /.*REES/i)]]获取json中book数组中的作者以REES结尾的所有值(REES不区分大小写)
[$..*]逐层列出json中的所有值,层级由外到内
[$..book.length()]获取json中book数组的长度

2.8 jsonschema断言

(1)什么是jsonschema

JSON Schema是基于JSON格式,用于定义JSON数据结构以及校验JSON数据内容。

(2)为什么需要jsonschema断言

在实际开发过程中,接口返回的json数据十分庞大,如果我们需要对每一个数据都做断言,会导致断言代码量过大,且不灵活。

使用JSON Schema可以自动判断json数据类型是否符合我们预期

(3)使用jsonschema

第一步:编写jsonschema文件,来定义json数据类型格式
// filename = my_schema.json
{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "title": "TestInfo",
    "description": "some information about test",
    "type": "object",
    "properties": {
        "name": {
            "description": "Name of the test",
            "type": "string"
        },
        "age": {
            "description": "age of test",
            "type": "integer"
        }
    },
    "required": [
        "name", "age"
    ]
}

jsonschema关键字的含义和作用

关键字描述
$schema表示该JSON Schema文件遵循的规范
title为该JSON Schema文件提供一个标题
description外层表示关于该JSON Schema文件的描述信息,内层表示关于该JSON数据的描述信息
type表示待校验元素的类型(例如,最外层的type为object表示待校验的是一个JSON对象,内层type分别表示待校验的元素类型为,整数,字符串,数字)
properties定义待校验的JSON对象中,各个key-value对中value的限制条件
required定义待校验的JSON对象中,必须存在的key
minimum用于约束取值范围,表示取值范围应该大于或等于minimum
exclusiveMinimum如果minimum和exclusiveMinimum同时存在,且exclusiveMinimum的值为true,则表示取值范围只能大于minimum
maximum用于约束取值范围,表示取值范围应该小于或等于maximum
exclusiveMaximum如果maximum和exclusiveMaximum同时存在,且exclusiveMaximum的值为true,则表示取值范围只能小于maximum
multipleOf用于约束取值,表示取值必须能够被multipleOf所指定的值整除
maxLength字符串类型数据的最大长度
minLength字符串类型数据的最小长度
pattern使用正则表达式约束字符串类型数据

type常见的取值

type取值对应的python数据类型
objectObject
arrayList
integerint
numberfloat或int
nullNone
boolean.Boolean
stringString
第二步:代码中使用jsonschema断言
import json
from jsonschema import validate
class TestDemo:
    def test_demo(self):
        # json内容
        json_content = {
            "name": "python",
            "age": 25
        }

        # schema文件
        with open('data/my_schema.json','r',encoding='utf-8') as f:
            my_schema = json.load(f)

        # 校验
        validate(instance=json_content,schema=my_schema) # 参数instance表示待校验的json数据,schema表示schema规则

2.9 请求中添加认证信息

一些http请求需要在请求数据中添加认证信息,才能正确响应。
在这里插入图片描述

那么如何在requests中添加认证信息呢??

在这里插入图片描述

2.10 requests请求发送图片

以企业微信上传图片为例:

class MaterialPage(BasePage):
    """素材管理page类"""
    def up_image(self,filename):
        """
        上传图片
        :return:
        """
        filedir = os.path.join(IMAGESDIR,filename)
        with open(file=filedir,mode='rb') as f:
            file = {"file": f}
            r = self.requests.post("https://qyapi.weixin.qq.com/cgi-bin/media/upload?type=image",files=file)
        return r

第一步:将图片读取为二进制文件

第二步:将读取的二进制文件,存进字典中,key为“file”

第三步:将字典传递到参数files中,发送请求

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • python全栈自动化测试视频-软件测试之python全栈自动化测试工程师(柠檬班),全套下载(34.8G)...
    1、开学典礼 课程_gaI2R.mp4 2、为何学了自动化,会涨薪3000 课程_6REAM.mp4 3、Python编码环境安装和基本语法 课程_fuPsC.mp4 4、Python常用运算符&常用数据类型 课程_7Ea3M.mp4 5、常用数据类型List&Tuple&dict(一) 课程_NTvfQ.mp4 6、常用数据类型List&Tuple&dict(二) 课程_nmuJP.mp4 7、常用控制流if&for&While(一) 课程_7TLDK.mp4 8、常用控制流if&for&While(二) 课程_iV3n7.mp4 9、Python函数篇 课程_mbZws.mp4 10、Python之函数&内置函数 课程_51jax.mp4 11、Python函数练习强化1 课程_aO5ty.mp4 12、Python函数练习强化2 课程_1OjVb.mp4 13、file对象测试数据的读写与操作 课程_P1mtF.mp4 14、OS对目录的操作以及引用 课程_VbRgD.mp4 15、python异常处理 异常基类学习 15、python异常处理 异常基类学习.mp4 16、Python调试方法以及技巧 16、Python调试方法以及技巧.mp4 17、面向对象编程–类的创建 17、面向对象编程–类的创建.mp4 18、面向对象编程–继承与初始化函数 18、面向对象编程
  • python接口自动化(五)--数据与代码分离
    前面我们已经实现了用unittest框架编写测试用例,实现了请求接口的封装,这样虽然已经可以完成接口的自动化测试,但是其复用性并不高。 我们看到每个方法(测试用例)的代码几乎是一模一样的,试想一下,在我们的测试场景中,一个注册接口有可能会有十几条到几十条测试用例,如果每组数据都编写一个方法,这样将会有更多的重复项代码,不仅执行效率不高,也不好维护。 接下来将会对框架进行优化,采用数据驱动方式,1)把测试数据用excel表格管理起来,代码做封装,2)用ddt来驱动测试,两部分相互独立。 1.数据与代码分离:excel管理测试数据 在上一节的代码中, test_register.py 模块中,定义了三个方法(三个测试用例),每一个测试用例都需要提供一组测试数据:url,params,method,expect_res等,不利于修改和构建,现在我们新建 excel文件(TestData.xlsx )。如下: 自动化用例设计: 关于自动化测试用例的设计,是基于对接口业务流程的熟悉,只有熟悉业务流程,才能设计出较好的自动化测试数据。这边要考虑的点很多, id:用例编号,从1开始,唯一module:接口模块case_name:用例名称method:请求类型url:接口地址信息params:请求参数 用例设计好了,这边我遇到了三个问题: 第一:如何读取测试数据? 第二:读取的测试数据
  • 自动化测试高效学习路线指导,提高你百倍自学效率
    目录 前言路线图总览第一部分:Python编程必备技术第一阶段: python基础阶段第二阶段: python进阶阶段第三阶段:数据库的基本知识 第二部分:APPUI自动化测试第一阶段 appium基本应用第二阶段 monkey基本应用第三阶段:appium进阶应用第四阶段:APP上元素定位及操作技巧第五阶段:APPUI并入自动化测试框架 第三部分:WEBUI自动化阶段第一阶段:前端基础第二阶段:工具使用第三阶段:元素定位第四阶段:web页面常用操作技巧第五阶段:web自动化测试的常用技巧第六阶段:UnitTest结合Selenium第七阶段:多线程与分布式 第四部分:接口自动化测试第一阶段:什么是接口第二阶段:接口工具的使用第三阶段:接口测试的准备工作第四阶段:数据库知识第五阶段:数据导入与测试 看到最后的福利 前言 从各方来的朋友,能够相聚这篇文章是大家的缘分,也是我的荣幸。 接下来,我要开始和大家讲讲如何从0开始学Python自动化测试。 不论是转行自动化测试还是功能测试进阶自动化还是开发转自动化测试的伙伴,这篇自动化测试工程师学习导图,我想都是可以看看的 同时也相信各位在掌握这份学习导图上的知识点后,能够独立搭建属于各位自己的Python自动化测试框架。 不过前情提要是,在自学完这个知识点后,一定要记得到一些开源网站找合适的项目去练手。 一来是找工作所œ
  • python+request+pytest+auller 搭建接口自动化测试框架
    ** 接口自动化测试框架 一、项目目录 项目整体框架分为6个模块公共方法(common)配置模块(conf)测试用例(data)日志(log)测试报告(report)测试套件(test_case) 启动项目运行主函数(main)即可 主函数代码 #!/usr/bin/env python # -*- coding:utf-8 -*- # fileName: main.py """ 作者:白帝城的农村人 时间:2021年3月 版本:v1.0 内容:接口自动化测试主函数 更新: """ from AotoInterfaceTest.conf import settings,logsettings from AotoInterfaceTest.common import SendEmail from logging import config, getLogger config.dictConfig(logsettings.LOGGING_DIC) log = getLogger('log_msg') import os import pytest if __name__ == '__main__': # pytest.main(['-vs' ,f'--alluredir={settings.RESULT_JSON_FILE_PATH}',f'{settings.TEST_CASE
  • 软件测试工程师必备知识点
    软件测试工程师必备知识点 那么软件测试学习,如何去学好每个阶段,变为一个真正的测试大牛呢? 一、软件测试前景分析、职业规划、实战学习路线解读 1.熟悉目前想要转行学测试的好处,解决想要转行测试人员的顾忌,结合自身分析是否适合转行做测试 2.熟悉测试行业前景情况,熟悉国内外软件测试行业现状 3.熟悉软件测试的基本概念、背景知识,对软件测试有初步的认知 4.熟悉软件测试人员的职业发展规划,在学习之处就对自己设定目标 5.熟悉企业实践中需要具备的必备技能,企业测试人员学习的实战路线, 清晰认知课程目标,根据企业期望要求,通过掌握理论知识结合企业实战路线,模仿企业运作模式,塑造专业的测试能力。 二、软件测试基础知识 1.熟悉软件测试的定义,软件测试的目的是什么 2.能够按照不同维度区分软件测试方法的分类,熟悉每种测试方法的特点 3.熟悉软件测试的原则,提前熟悉基本约定和要求,少走弯路 4.熟悉软件测试策略,更加高效且合理的安排测试任务 5.熟悉软件测试模型,了解软件测试在项目研发过程中的不同定位 6.结合企业要求,项目实战 三、需求分析阶段 1.什么是软件需求 2.测试参与需求分析的必要性 3.谁来主导需求分析 4.测试在需求阶段需要做哪些事情 5.企业需求阶段的整体流程 6.熟悉软件的需求是什么,测试在需求阶段要做的事情和意义 7.熟悉公司软件项目需求阶段的全流程
  • 整一下Python接口自动化测试
    1)环境准备: 接口测试的方式有很多,比如可以用工具(jmeter,postman)之类,也可以自己写代码进行接口测试,工具的使用相对来说都比较简单,重点是要搞清楚项目接口的协议是什么,然后有针对性的进行选择,甚至当工具不太适合项目时需要自己进行开发。 在我们项目的初期,我们采用的是jmeter进行接口测试,当时觉得这个工具上手简单,团队成员学习成本低,并且接口测试的脚本稍微调整一下还可以用来做性能测试。 不过随着项目规模、团队人数的不断增长,渐渐的这个工具有适应不了当前项目的需求了,为此我们项目也重新开发了相关接口自动化的平台。但是,但是。。。可能是我让大家中毒太深,现在很多同学一提到接口测试关联到jmeter,为此,我深深感到不安。毕竟jmeter只是个工具,换个项目换个协议你是否还能玩转接口测试呢?session和cookie有什么区别?工具又是怎么实现的呢? 比如session如何保存,接口依赖如何处理,case如何管理及执行顺序,测试数据如何管理等等题,这个过程也有助于我们更加深刻的理解接口测试和http协议。 本文主要采用python语言,python中http协议接口相关的库有urllib,urllib2以及reqeusts库,这其中reqeusts库用来起来最方便,因此我也主要采用requests库来做http协议的接口测试。首先来看下需要哪些环境信息: ¸
  • 接口测试人员需要掌握的知识技能
    ** 一、首先明白接口是什么 ** 软件接口是指程序中具体负责在不同模块之间传输或接受数据的并做处理的类或者函数。(而不是指传输的数据!!) ** 二、什么是接口测试 ** 接口测试就是通过向接口传递数据来测试这个接口是否正确。比如:一个QQ登录功能接口,就需要我们传递QQ号和密码去验证这个登录接口是否正确,能否使用。 ** 三、进行接口测试需要掌握哪些知识 ** 1、了解系统及内部各个组件之间的业务逻辑交互; 2、了解接口的I/O(input/output:输入输出); 3、了解协议的基本内容,包括:通信原理、三次握手、常用的协议类型、报文构成、数据传输方式、常见的状态码、URL构成等; 4、常用的接口测试工具,比如:apipost、jmeter、loadrunner、soapUI等; 5、数据库基础操作命令(检查数据入库、提取测试数据等); 6、常见的字符类型,比如:char、varchar、text、int、float、datatime、string等; ** 四、如何学这些技能? ** 1、系统间业务交互逻辑:通过需求文档、流程图、思维导图、沟通等很多渠道和方式; 2、协议:推荐《图解http》这本书,内容生动,相对算是入门级的书籍,其他的还有《图解tcp、IP》等; 3、接口测试工具:百度这些工具,然后你会发现,好多的教学博客、相关问题解决方案、以及一些基于工具的书籍
  • 2021年软件测试全套知识点和资源梳理
    软件测试教程、测试学习路线图、测试最新课程和资料分享! 继Java学习路径梳理收获了一阵好评,我决定从今天开始逐一为大家梳理不同学科学习路径。留言最多的学科优先整理哦~不管你是功能小白,还是进阶自动化的小可爱。都可以参考下面学习路线图,长达12余万小时免费课程梳理。 第零阶段:了解软件测试职业成长路线 课程:软件测试:趋势、变革及进阶之路 大家都知道测试入门简单,那是因为功能测试入门简单,也就是我们俗称的“点点点”,但是从手工测试进阶到自动化测试,是一个本质性的飞跃。并不是说功能测试工作两三年你就是自动化测试了,而是新的领域和知识。所以不建议小白们,看到功能测试可就业了就去就业,尽量往天花板高的地方走。 第一阶段:前置基础知识 本阶需要掌握核心内容:熟悉计算机相关概念,掌握测试理论,HTML常用标签和语法规范、熟练掌握使用CSS定义网页样式、Js基本语法、 课程:基础课程(计算机基础、HTML基础、测试理论) 软件测试基础入门之计算机基础 软件测试基础入门之HTML基础 软件测试基础入门之测试理论​ 第二阶段:linux和数据库 本阶段需要掌握linux操作系统按照和配置;熟练掌握linux常用命令、掌握数据增删改查操作、熟练数据库索引、视图、事务、常见函数等高级功能;掌握Redis的string类型、hash类型、set类型、list类型等基本类型和操作; 课程
  • 2021最新软件测试学习路线图!
    2021最新软件测试学习路线图! 正在学习或者考虑学习软件测试的小伙伴们有时候是不是觉得很迷茫,学习了软件测试职业到底有哪些发展方向呢?又需要学习哪些内容,掌握到什么程度呢?那就跟我一起来看看吧! 首先我们需要了解下学习软件测试每个阶段的目标以及掌握知识点 第一阶段-前置基础知识 1、学习目标: 可掌握的核心能力: 熟悉计算机相关概念;掌握基础的测试理论;熟练掌握HTML常用标签和语法规范;掌握使用CSS定义网页样式;掌握js的基本用法; 2、知识点: 1)计算机基础 计算机组成部分、操作系统分类、B/S和C/S架构、常用DOS命令、服务器域名 2)测试理论 软件测试的目的、软件测试定义、软件测试原则、产品质量模型、测试基本流程 3)HTML基础 HTML基础语法、标签属性、图片标签、超链接、锚点、表单 4)CSS基础 CSS基础语法、CSS四类选择器、常用文字属性、行高属性、边框、盒子模型、内外边距 5)JS基础 JS基础语法、JS引入方式 第二阶段-linux和数据库 1、学习目标: 可掌握的核心能力: 掌握Linux操作系统按照和配置;熟练掌握Linux常用命令;掌握数据库增删改查操作;熟悉数据库索引、视图、事务、常见函数等高级功能;掌握Redis的string类型、hash类型、set类型、list类型等基本类型和操作; 2、知识点: 1)LINUX(熟悉) 操作系统介绍
  • 软件测试学习路线图(2020最新版)
    第一阶段:软件测试基础入门 计算机基础是软件测试人员必备的常识,所讲内容包括:计算机软硬件系统组成、常用DOS命令、常见的计算机数据计量单位等。 HTML(超文本标记语言)是用于在Internet上显示Web页面的主要标记语言。网页由HTML组成,用于通过Web浏览器显示文本,图像或其他资源。 软件测试行业需要掌握有关测试相关知识,包括软件测试的目的、软件测试定义、缺陷定义和评判标准、测试用例等。 基础入门学习重点: 熟悉计算机相关概念。 掌握基础的测试理论。 熟练掌握HTML常用标签input。 掌握使用CSS选择器。 第二阶段:软件测试通用技能 Linux,是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统,linux常用命令是软件测试人员必备技能。 软件项目基本都在Linux系统中部署,做为中级软件测试人员需要具备在linux部署测试环境的技能,本视频讲解最常见的组合LNMP环境部署,以商城项目为示例学习环境部署。 MySQL是一种关系型数据库管理系统,是最流行的关系型数据库管理系统之一,关系型数据库操作是软件测试人员必备技能。 IT项目为了解决性能优化问题,经常将一些数据计算结果存储到非关系数据库中,那么做为一名软测人员就需要从非关系数据库中读取数据来来验证数据的正确性,有效性
  • Python接口自动化测试—读写excel(openpyxl库)
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、安装,导入openpyxl库二、python代码读取excel文件信息保存在列表里备用三、requests库写接口函数四、取出备用列表中的url,data传给注册接口函数五、将实际结果与期望结果作比较—断言六、写入断言结果到excel里七、有了读取函数,接口函数,写入函数,那么我们完整的跑一遍总结 前言 python自动化做接口测试,我们需要读取excel信息和写入excel信息,那么今天我们来学习用python读取Excel数据和往excel中写入数据的方法,利用一个叫openpyxl的第三方库,那么我们开始学习吧。 一、安装,导入openpyxl库 1.安装:pip在线下载第三方库,pip install openpyxl/或者pycharm—settings里面安装; 2.导入:import openpyxl导入当前py文件; 二、python代码读取excel文件信息保存在列表里备用 1.首先用excel准备测试用例; 2.明确表名filename;表的sheet名sheetname;表的单元格cell的坐标row及column; 3.将excel拖动到py文件的同目录下; 4.利用openpyxl方法读取excel每个单元格信息; 5.for循环将每一列数据存入字典,再将字典放入列表中;
  • python+requests+BeautifulReport+Jenkins接口自动化学习笔记
    前言 Requests 库是一个优雅而简单的 Python HTTP 库,主要用于发送和处理 HTTP 请求。底层封装了 urllib3 库,并且提供了非常友好的 API,使用起来非常的简单方便。 目前主流的接口自动化框架均基于Requests 库进行开发。 当然我们主要还是用来做接口测试,接下来我会从接口测试角度来为大家讲解 requests 如何使用,并基于 unittest + ddt +BeautifulReport+jenkins 实现接口自动化持续集成。 1、构建思路 正常的接口测试流程是什么? 脑海里的反应是不是这样的:确定测试接口的工具 —> 配置需要的接口参数 —> 进行测试 —> 检查测试结果(有的需要数据库辅助) —> 生成测试报告(html报告) —>Jenkins持续集成 根据这个过程,我们一步步来搭建框架。在这个过程中,我们需要做到业务和数据的分离,这样才能灵活,达到我们写框架的目的。只要好好做,一定可以成功。这也是我当初对自己说的。 2、windows环境安装 安装python环境用pip安装requests模块用pip安装dtt模块 (数据驱动) 3.运用框架 python+unittest+requests+HTMLTestRunner or BeautifulReport+Jenkins(博主这里运用BeautifulReport) 4.项目结构
  • 接口自动化测试框架完整搭建python+unittest+requests+ddt
    接口自动化框架 一、首先废话不多说,直接开始讲解一下整个框架的目录结构,本次内容着重讲解测试用例类,只要掌握了测试用例类和接口测试用例怎么写就可以运用此框架。(需要一些python基础,能看的懂基本代码) common目录 1.contants是处理项目路径模块,本项目路径全部采取相对路径(这样做的好处是copy到任意地方可以直接运行,不用担心会路径报错) 2.handle_data处理excel用例中需要替换的参数,用来存储临时变量,和需要替换的excel用例中需要替换的字符串(注意存放临时变量时int类型应转换成str类型存放) 3.handle_db是连接数据库(mysql)处理需要进行数据库校验的模块,封装了三个方法,分别是:获取到查询的第一条数据、获取到查询的所有数据、获取查询到的数据条数 4.handle_request是用来发送请求的(支持cookie和token) 5.handle_webservice是用来发送webservice类型接口的请求(用到的比较少可以忽略此模块) 6.myconfig是读取和写入配置文件的模块 7.mylogger是输出日志模块,用来调用代码运行的时候哪些信息需要写入日志中,方便自己调试和找出接口错误信息,哪里需要就直接调用 8.readexcel读取excel用例数据的模块 9.send_email是发送测试报告邮件模块
  • 软件测试到底要不要报培训班?
    软件测试到底要不要报培训班? 参不参加培训班主要看自己,如果是就业参加软件测试培训很有必要,毕竟培训班的目的性很强学完就能到达就业水平,早点积累工作经验,工作经验就是核心竞争力。若有编程基础学习软件测试完全没有问题。 有人认为参加软件测试培训班很有必要,因为培训是一条快速入行捷径,不仅能省下很多时间和精力,还能积累项目实战姜堰,花钱也买不到的工作经验,能快速的积累实战经验就没必要用时间去交换这样不值。培训不仅能快速入行也能累积行业经验提高薪资。 现在软件测试行业人才缺口大,但是功能测试已经可以算是普遍饱和的状态,唯一缺乏的是技术人才,所以不太建议自学,如果自制力极强可试试。软件测试不太难,自学不好找工作,还有很多公司不认可,培训班基本可以系统的学习,后面就业会提供服务。如果学习为了就业建议报软件测试培训班学习。 如果有一定开发基础对代码又非常的熟悉,加上超强的自学能力和自律能力可以尝试自学;但是从时间成本和系统学习来讲,学习软件测试参加培训机构还是很有必要的。在系统学习的前提下,耗时6个月左右就能掌握软件测试的方法、工具、流程等。另外,在教学内容上强调实训项目,如果没有基础想短时间之内掌握软件测试从事软件测试的工作,参加培训是不错的选择。 软件测试培训机构的软件测试课程是从基础知识开始讲,大部分机构的软件测试培训课程是从简单的功能测试开始讲起,零基础的人也能学习不用担心自己不能学会
  • jemeter python接口自动化测试平台_python接口自动化测试(一)-环境准备
    接口测试的方式有很多,比如可以用工具(jmeter,postman)之类,也可以自己写代码进行接口测试,工具的使用相对来说都比较简单,重点是要搞清楚项目接口的协议是什么,然后有针对性的进行选择,甚至当工具不太适合项目时需要自己进行开发。 在我们项目的初期,我们采用的是jmeter进行接口测试,当时觉得这个工具上手简单,团队成员学习成本低,并且接口测试的脚本稍微调整一下还可以用来做性能测试。针对这个工具本人也整理了一个系统的文章帮团队的同学入门使用:Jmeter教程索引贴。 不过随着项目规模、团队人数的不断增长,渐渐的这个工具有适应不了当前项目的需求了,为此我们项目也重新开发了相关接口自动化的平台。但是,但是。。。可能是我让大家中毒太深,现在很多同学一提到接口测试关联到jmeter,为此,我深深感到不安。毕竟jmeter只是个工具,换个项目换个协议你是否还能玩转接口测试呢?session和cookie有什么区别?工具又是怎么实现的呢? 为了让大家能更加深入的掌握接口测试,很早就在打算写些简单的使用代码方式来做接口测试的入门教程,因为自己动手写代码有很多问题需要你自己去处理,比如session如何保存,接口依赖如何处理,case如何管理及执行顺序,测试数据如何管理等等题,这个过程也有助于我们更加深刻的理解接口测试和http协议。好了,废话了这么多,下面我们开始吧。
  • 全网首发,手把手教你python接口测试自动化--附源码
    目录 1. 接口定义 2. 基础流程 3. 需求分析 4. 用例设计 5. 脚本开发 6. 结果分析 接口定义:   接口普遍有两种意思,一种是API(Application Program Interface),应用编程接口,它是一组定义、程序及协议的集合,通过API接口实现计算机软件之间的相互通信。而另外一种则是Interface,它是面向对象语言如java,c#等中一个规范,它可以实现多继承的功能。接口测试中的接口指的是API。 为什么要使用接口:   假如公司的产品前端开发还没开发完,接口开发好了。有天领导说,小王,你测下这个登录功能,要是你不懂接口的话就会对领导说这个功能测不了啊,页面没开发完。领导会把你!@¥@)¥!   接口测试是不需要看前端页面的,可以更早的介入到测试工作中,提高工作效率。   根据测试金字塔,越底层成本越低,一个底层的bug可能会引起上一层的多个bug,所以测试越底层,越能保证产品的质量,也越能节省测试的成本。而单元测试一般是由开发来完成的,所以对于测试来说,接口测试是非常必要的。 对于自动化测试来说,UI的变动性最大,所以UI自动化测试的维护成本很高。而接口的改动很小,所以接口自动化测试是最实用,最节约成本的。 2. 基本流程 接口功能自动化测试流程如下: 需求分析 -> 用例设计 -> 脚本开发 -> 测试执行 -> 结果分析 2.1 示例接口
  • 黑马全新软件测试学习教程,100G免费学~~
    曾经有人问:“大四女生,软件测试岗,对测试也不太了解,编码能力也不行。不知道未来该如何规划,如何系统性学习测试?” 今天就分享黑马程序员全新的软件测试学习教程,超100个G的资源免费学习哦~!(分享所含学习路线图,学习视频,学习资料) 点击查看大图 点击查看大图 软件测试视频第一阶段-前置基础知识本阶段软件测试课程共计5个知识点 软件测试视频第一阶段-前置基础知识本阶段软件测试课程共计5个知识点,1个免费视频涵盖1、学习目标:可掌握的核心能力:1. 熟悉计算机相关概念;2. 掌握基础的测试理论;3. 熟练掌握HTML常用标签和语法规范;4. 掌握使用CSS定义网页样式;5. 掌握js的基本用法; 2、知识点: 1)计算机基础计算机组成部分、操作系统分类、B/S和C/S架构、常用DOS命令、服务器域名 2)测试理论软件测试的目的、软件测试定义、软件测试原则、产品质量模型、测试基本流程 3)HTML基础HTML基础语法、标签属性、图片标签、超链接、锚点、表单 4)CSS基础CSS基础语法、CSS四类选择器、常用文字属性、行高属性、边框、盒子模型、内外边距 5)JS基础JS基础语法、JS引入方式 软件测试视频篇第二阶段-linux和数据库本阶段软件测试课程共计4个知识点 软件测试视频篇第二阶段-linux和数据库本阶段软件测试课程共计4个知识点,共计N个免费配套视频涵盖1、学习目标
  • Python+Requests+Pytest 接口自动化测试脚本总结
    目录 一、框架搭建流程 1. 封装接口请求 2. 存储接口信息 3. 封装登录和其他方法 4. 使用Pytest管理测试用例 5. 添加日志模块 6. 生成测试报告 7. 测试报告发送至邮箱 8. 优化动态数据的存储 9. 项目目录 二、上传代码到github 三、运行测试用例的两种方法 1. 命令行模式 2. 在python脚本中调用pytest 四、重构接口自动化测试框架 一、框架搭建流程 1. 封装接口请求 封装post和get方法方便在使用requests模块发送请求时,仅调用一个方法即可 #!/usr/bin/env python # -*- coding:utf-8 -*- # fileName: run_method.py import requests class RunMethod(object): def post_main(self, url, headers, data): # 忽略不安全的请求警告信息 requests.packages.urllib3.disable_warnings() # 遇到requests的ssl验证,若想直接跳过不验证,设置verify=False即可 response = requests.post(url=url, headers=headers, data=data, verify=False) return
  • python实现接口自动化测试
    1. 接口自动化流程 需求分析 请求:url、方法、数据 响应:响应数据、状态码 挑选需求做自动化测试 时间、人员、接口复杂度 设计测试用例 搭建自动化测试环境 如python、pycharm 设计测试项目的架构 报告、参数化、用例执行框架 编写代码执行测试用例 unittest、pytest 生成测试报告 2.接口清单整理 收藏文章 请求 1)请求url: 2)请求方法:POST/GET 3)请求参数:Headers = {. } 4)请求报文:Body响应 1)响应状态码: 2)响应数据: 3.用例设计 1.单接口的用例设计 模板: id、模块、接口名称、请求url、用例名称、请求方法、请求参数类型、请求参数、预期结果、实际结果、备注 注意:单接口用例设计的颗粒度较小(以测试数据为颗粒度) 2.业务功能的用例设计 多接口模板: d、模块、接口名称、请求url、用例名称、请求方法、请求参数类型、请求参数、预期结果、实际结果、备注 注意 4. 项目搭建 自动化测试目录结构 接口对象层api 1)登录 login.py 2)获取登录列表 … 用例业务实现层 case 1)tese_login.py … 用例报告report 报告.html 工具层 tools数据层 data 1)login.json … 运行入口 run_sutie.py 4.1接口对象层 1.login.py #
  • python自动测试p-关于《Python自动化测试实战》
    作者有话说 笔者写这本书的初心是想通过自身经验分享一些在自动化测试领域中的实用技术,能够帮助那些正在从事自动化测试相关工作或者准备转型自动化测试的测试人员。任何一门技术涵盖的知识点都是非常广泛的,可能并不是一本书就能够写完并且讲解清楚。本书没有太多废话,书中内容基于实战型例子,任何读者对着本书中的示例都可以很快上手学习。书中实战教程设计思路属于一气呵成,从头到尾知识体系版块布局清晰,实操流程表述细致且接地气,可保证大部分读者在阅读本书时比较轻松、愉悦。并不会像市面上有些书籍内容知识点过于分散,操作流程缺失,导致读者实操衔接不上。综上而言,一本真正的好书,内容上一定是朴实,实用,具备一些行业内未曾公开过的知识点。阅读风格上一定是简单易懂,表达接地气。所以,如果你购买了本书,相信在阅读、操练期间一定会有所感触。希望这本书可以帮助到你,也感谢你对我的支持,谢谢!!! 第 1 章 自动化测试理论 引领读者了解实施自动化测试的意义和自动化测试实施过程,为后续学习自动化测试技术抛砖引玉。 第 2 章 Selenium 3 自动化测试实战 涵盖目前主流功能自动化测试工具 Seleneium 3 的应用,讲解了 Selenium 3 自动化测试环境搭建,并结合大量案例来演示多种 Webdriver API 在自动化测试中的应用、unittest 单元测试框架、数据驱动测试(DDT