04 2020 档案
摘要:断言是写自动化测试基本最重要的一步,一个用例没有断言,就失去了自动化测试的意义了。什么是断言呢?简单来讲就是实际结果和期望结果去对比,符合预期那就测试 pass,不符合预期那就测试 failed pytest 允许使用标准 Python 断言来验证 Python 测试中的期望和值。例如 断言 f()
阅读全文
摘要:allure 是一个 report 框架,支持 java 的 Junit/testng 等框架,当然也可以支持 python 的 pytest 框架,也可以集成到 Jenkins 上展示高大上的报告界面。环境准备1.python3.62.windows 环境3.pycharm4.pytest-all
阅读全文
摘要:pytest-HTML 是一个插件,pytest 用于生成测试结果的 HTML 报告。兼容 Python 2.7,3.6pytest-html1.github 上源码地址【https://github.com/pytest-dev/pytest-html】2.pip 安装> pip install
阅读全文
摘要:doctest 从字面意思上看,那就是文档测试。doctest 是 python里面自带的一个模块,它实际上是单元测试的一种。官方解释:doctest 模块会搜索那些看起来像交互式会话的 Python 代码片段,然后尝试执行并验证结果doctest 测试用例可以放在两个地方 函数戒者方法下的注释里面
阅读全文
摘要:pytest 配置文件可以改变 pytest 的运行方式,它是一个固定的文件 pytest.ini 文件,读取配置信息,按指定的方式去运行。 ini 配置文件pytest 里面有些文件是非 test 文件 pytest.ini pytest 的主配置文件,可以改变 pytest 的默认行为 conf
阅读全文
摘要:命令行参数是根据命令行选项将不同的值传递给测试函数,比如平常在 cmd 执行”pytest —html=report.html”,这里面的”—html=report.html“就是从命令行传入的参数对应的参数名称是 html,参数值是 report.html conftest 配置参数首先需要在 c
阅读全文
摘要:为了提高代码的复用性,我们在写用例的时候,会用到函数,然后不同的用例去调用这个函数。比如登录操作,大部分的用例都会先登录,那就需要把登录单独抽出来写个函数,其它用例全部的调用这个登录函数就行。但是登录的账号不能写死,有时候我想用账号 1 去登录,执行用例 1,用账号 2 去登录执行用例 2,所以需要
阅读全文
摘要:当用例 a 失败的时候,如果用例 b 和用例 c 都是依赖于第一个用例的结果,那可以直接跳过用例 b 和 c 的测试,直接给他标记失败 xfail用到的场景,登录是第一个用例,登录之后的操作 b 是第二个用例,登录之后操作 c 是第三个用例,很明显三个用例都会走到登录。如果登录都失败了,那后面 2
阅读全文
摘要:pytest 可以支持自定义标记,自定义标记可以把一个 web 项目划分多个模块,然后指定模块名称执行。app 自动化的时候,如果想android 和 ios 公用一套代码时,也可以使用标记功能,标明哪些是 ios 用例,哪些是 android 的,运行代码时候指定 mark 名称运行就可以 mar
阅读全文
摘要:这是一个快速指南,介绍如何在不同情况下跳过模块中的测试1.无条件地跳过模块中的所有测试:pytestmark = pytest.mark.skip("all tests still WIP")2.根据某些条件跳过模块中的所有测试pytestmark = pytest.mark.skipif(sys.
阅读全文
摘要:断言是写自动化测试基本最重要的一步,一个用例没有断言,就失去了自动化测试的意义了。什么是断言呢?简单来讲就是实际结果和期望结果去对比,符合预期那就测试 pass,不符合预期那就测试 failed pytest 允许使用标准 Python 断言来验证 Python 测试中的期望和值。例如 断言 f()
阅读全文
摘要:pytest.mark.parametrize 装饰器可以实现测试用例参数化。1.这里是一个实现检查一定的输入和期望输出测试功能的典型例子 import pytest@pytest.mark.parametrize('test_input,expected', [('3+5', 8), ('2+4'
阅读全文
摘要:平常写自动化用例会写一些前置的 fixture 操作,用例需要用到就直接传该函数的参数名称就行了。当用例很多的时候,每次都传返个参数,会比较麻烦。fixture 里面有个参数 autouse,默讣是 Fasle 没开启的,可以设置为True 开启自动使用 fixture 功能,返样用例就丌用每次都去
阅读全文
摘要:既然有 setup 那就有 teardown,fixture 里面的 teardown 用 yield 来唤醒 teardown的执行在所有用例执行完后执行:yield import pytest@pytest.fixture(scope='module')def open(): print('打开
阅读全文
摘要:用例加 setup 和 teardown 可以实现在测试用例之前或之后加入一些操作,但返种是整个脚本全局生效的,如果我想实现以下场景:用例 1 需要先登录,用例 2 不需要登录,用例 3 需要先登录。很显然这就无法用 setup 和 teardown 来实现了。 fixture 优势firture
阅读全文
摘要:用例运行级别 模块级(setup_module/teardown_module)开始于模块始末,全局的 函数级(setup_function/teardown_function)只对函数用例生效(不在类中) 类级(setup_class/teardown_class)只在类中前后运行一次(在类中)
阅读全文
摘要:pytest 是 python 的一种单元测试框架,与python 自带的 unittest测试框架类似,但是比 unittest 框架使用起来更简洁,效率更高。根据pytest 的官方网站介绍,它具有如下特点: 非常容易上手,入门简单,文档丰富,文档中有很多实例可以参考 能够支持简单的单元测试呾复
阅读全文
摘要:官方文档1.官方文档地址:https://pypi.python.org/pypi/ParamUnittest/2.github源码下载地址:https://github.com/rik0/ParamUnittest 安装paramunittest: 源码里面设定了必须定义一个setParamete
阅读全文
摘要:GitHub传送门:https://github.com/TesterlifeRaymond/BeautifulReport 配置BeautifulReport 下载、解压并修改名字为BeautifulReport: 把BeautifulReport文件夹复制放到python安装目录下的site-p
阅读全文
摘要:TeserHome地址:https://testerhome.com/opensource_projects/60前端:https://github.com/pencil1/ApiTestWeb 实现技术:js + vue + element-ui后端:https://github.com/penc
阅读全文
摘要:很多时候,在调用接口时,需要对请求进行签名。需要用到unix时间戳。 在python里,在网上介绍的很多方法,得到的时间戳是10位。而java里默认是13位(milliseconds,毫秒级的)。 下面介绍python获得时间戳的方法: 1、10位时间戳获取方法:强制转换是直接去掉小数位。 impo
阅读全文
摘要:yaml 通常用来存储数据,类似于json 安装:pip install ruamel.yaml 建一个空的yaml文件 写入数据 import osfrom ruamel import yaml# 将字典写入到yamldata = { 'host1': '123', 'host2': 456, '
阅读全文
摘要:# MD5加密# 由于MD5模块在python3中被移除# 在python3中使用hashlib模块进行md5操作 import hashlib def MD5(str):# 创建md5对象hl = hashlib.md5()hl.update(str.encode(encoding='utf-8'
阅读全文
摘要:1、中文乱码问题: (1)、文件头加上# -*- coding:utf-8 -*- 或者 #coding=utf8 (2)、pymssql.connect连接串中charset是要跟你数据库的编码一样,如果是数据库是gb2312 ,则写charset='gb2312'。 (3)、读取数据时需要dec
阅读全文
摘要:#!/usr/bin/env python# -*- coding: utf-8 -*-# @Time : 2018/5/28 18:51# @Author : StalloneYang# @File : mysql_test.py# @desc:# 连接数据库import pymysql.curs
阅读全文
摘要:import requestsimport unittestclass TestQQ(unittest.TestCase): '''测试QQ号接口''' # 此注释将展示到测试报告的测试组类 def test_qq(self): '''测试QQ号码,正确的appkey''' # 此注释将展示到测试报
阅读全文
摘要:# 添加多个附件参数化files = [("1.png", "1.png") ("2.png", "2.png") ]def addFiles(files, n=1): file = [] for i in list(range(n)): a =("files[]", (files[i][1], o
阅读全文
摘要:# 以禅道为例: 一、创建一个类,类里面写一个登录方法: import requestsclass LoginZentao(): def __init__(self, s): # 初始化 self.s = s # 定义一个全局的s def login(self): r = self.s.post()
阅读全文
摘要:文件下载类型: Content-Type: octets/stream 一般为文件类型:
阅读全文
摘要:# 类和方法class Count(): def __init__(self, aaa, bbb): # 初始化 # 可以放公共的参数 print('实例化的时候,会执行init的内容') self.a = aaa self.b = bbb # 加了self是全局变量,没加self是局部变量 def
阅读全文
摘要:# coding:utf-8import requestsimport refrom bs4 import BeautifulSoup# s = requests.session() # 全局的sdef get_token(s): ''' fuction: 获取token args: s 参数 -》
阅读全文
摘要:# 函数a = [1, 3, 6, 4, 85, 32, 46]print(sum(a)) # sum,求和函数def add(): a = 1, b = 2, return a + bprint(add())def add(a, b): # 都必填 return a + bprint(add())
阅读全文
摘要:# 爬图片# 目标网站:http://699pic.com/sousuo-218808-13-1.htmlimport requestsfrom bs4 import BeautifulSoupimport osr = requests.get('http://699pic.com/sousuo-2
阅读全文
摘要:安装:beautifulsoup4 from bs4 import BeautifulSoupyoyo = open('yoyo.html', 'r') # 以读的方式打开“yoyo.html”文件# print(yoyo.read()) # 此方法打开的是一个字符串,内容没有层级结构# yoyo.
阅读全文
摘要:import unittestimport requestsdef add(a, b): print('前置条件!!!!!:如登录') return a + bclass TestAAA(unittest.TestCase):# 一次性的前置条件, 运行优先级:1 @classmethod # 调用
阅读全文
摘要:解决问题:每次密码都是变化的,无法通过账号密码登录(总不能每次去fiddler复制吧????)解决思路:1.先用selenium调用浏览器(不会selenium的自己想办法了),2.登录后从浏览器里面抓取cookies3.把cookies传给s4.这样就成功成功了如果登录有验证码怎么办?比如:博客园
阅读全文
摘要:导入re模块 import re # 正则提取前部的值,"^(.+?)后",^表示从头开始匹配,返回列表 result = re.findall("^(.+?)345", '123wersdfsd345')print(result)print(result[0]) # 正则提取中间的值,"前(.+?
阅读全文
摘要:# url编码与解码 from urllib import parse url = 'http://zzk.cnblogs.com/s/blogpost?Keywords=中文' a = '中文' b = parse.quote(a) # 转urlencode编码 print(b) print(pa
阅读全文
摘要:# 1、requests里面自带解析器转字典 print(r.json()) print(type(r.json())) # 取出json中的'result_sk_temp'字段 # {"resultcode":"200","reason":"查询成功","result":{"sk":{"temp"
阅读全文
摘要:# 传json参数 import requests url = 'xxxxxxxx' body = { 'xxx': 'xxx', 'xxx': 'xxx' } # body是json格式的 r = requests.post(url, json=body) print(r.text) # 第二种方
阅读全文
摘要:# 字典t = {# 键:值 '': '', '': '' } # 字典# dict key: value key是唯一的,无序的h = { 's': 12, 'f': False, 2: 'd', 'r': 't', 'sd': ['gf', 'rt', ' ew'],
阅读全文
摘要:allow_redirects=False 不重定向 # 获取重定向后的地址loc = r.headers # 相对地址host = 'https://i.cnblogs.com/'url = host+'EditPosts.aspx?opt=1' loc = r.headers['Location
阅读全文
摘要:s = requests.session() # 此方法只适用于网站是cookies这种,网站是token的没用 # 这样做的好处就是可以保存cookies并保持会话,不用每次都去获取、传参 Token请求: Cookies请求: 有保持登录的cookies: 一:加入指定的cookie 把s所带的
阅读全文
摘要:获取登录的cookies:loginCookies = r.cookies 把获取到的cookies传入请求:cookies=loginCookies 此方法需每一次都调用登录方法,并且每一次发送请求都需要传Cookies,不建议使用
阅读全文
摘要:对于不可重复参数,可以用时间戳,防重复import timetitle = '这是我的标题:%s'%str(int(time.time()))print(title) 转化成时间格式 t = time.strftime('%Y_%m_%d_%H_%M_%S')print(t) t = time.st
阅读全文
摘要:乱码: 以content字节流输出,解码成utf-8: print(r.encoding) # 查看返回的编码格式: 去掉Warning警告: import urllib3 urllib3.disable_warnings() 错误处理: 403:拒绝或者禁止访问:须伪装头部(头部详情根据接口文档)
阅读全文
摘要:HTTPS: get: url = 'https://www.juhe.cn/docs/api/id/39' r = requests.get(url) #发送get请求 print(r.status_code) #打印状态码 print(r.headers) #打印返回的报头(头部) print(
阅读全文
摘要:get请求: 1、get请求(无参数): 2、get请求(带参数): 接口地址:http://japi.juhe.cn/qqevaluate/qq 返回格式:json 请求方式:get post 请求示例:http://japi.juhe.cn/qqevaluate/qq?key=您申请的appKe
阅读全文
摘要:url = '接口地址' r = requests.get(url) # 发送get请求 print(r.status_code) # 打印状态码,若有重定向,返回的是重定向之后的代码 print(r.headers) # 打印返回的报头(头部) print(r.text) # 查看返回结果的文本形
阅读全文
摘要:、 http简介:http(超文本传输协议)是一个基于请求与响应模式的、无状态的、应用层的协议 2、 url详解:百度搜索的一个url地址:https://www.baidu.com/s?wd=%E4%B8%8A%E6%B5%B7%E6%82%A0%E6%82%A0%E5%8D%9A%E5%AE%A
阅读全文
摘要:git客户端官网:https://git-scm.com/ 下载对应版本安装 服务器安装git 安装依赖:yum install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel 安装git:yum install -y
阅读全文
摘要:匿名分支 新建个仓库,并且初始化,创建3个文件,并提交 此时在没有创建新分支的情况下,checkout一下,比如上一个快照 这一段话的意思是,使用了checkout命令,但是没有指定分支名,所以git会创建一个叫做匿名分支(没有名字的分支)的东西,当你切换到别的分支的时候,在这个匿名分支中,所做的所
阅读全文
摘要:实际开发中的分支 目前的快照情况:git log --decorate --all --oneline --graph 可以看到,目前HEAD是指向的master分支 合并分支:git merge 分支名(将“分支名”合并到当前分支) 把feature分支合并到master分支:git merge
阅读全文
摘要:git的分支 与svn对比 克隆一份全新的目录以同样拥有 5 个分支来说,SVN 是同时复制 5 个版本的文件,也就是说重复 5 次同样的动作。而 Git 只是获取文件的每个版本的元素,然后只载入主要的分支(master),如果克隆一个拥有将近一万个提交(commit),5 个分支,每个分支有大约
阅读全文
摘要:修改最后一次提交: 在实际开发中,可能会遇到以下两种情景:情景一:版本刚一提交(commit)到仓库,突然想起漏掉两个文件还没有添加(add)。情景二:版本刚一提交(commit)到仓库,突然想起版本说明写得不够全面,无法彰显你本次修改的重大意义…… 执行带 --amend 选项的 commit 提
阅读全文
摘要:准备工作: 创建一个新的项目,并初始化git 创建两个文件,并写入对应内容(utf-8无bom格式) 执行git add 命令将两个文件添加到暂存区,执行commit命令提交到仓库并生产快照 修改工作区文件内容 比较暂存区与工作区的目录:git diff 以text1为例 diff --git a/
阅读全文
摘要:reset:将仓库里面的内容恢复回暂存区,类似于从仓库里检出文件到暂存区checkout:将暂存区的文件恢复回工作区,即,把暂存区的文件检出到工作区 下面是之前三次提交的内容 三个区域的文件状态: 执行命令:git reset HEAD~ 这里~代表上一个版本,这个时候,就会回到第二次提交的状态,而
阅读全文
摘要:查看当前的工作状态:git status On branch master:现在位于master分支里面nothing to commit, working tree clean:没有需要提交的文件,当前目录是干净的,即,在上一次提交过后,到目前为止,此目录下的内容没有被改变过 再新建一个文件,不加
阅读全文
摘要:先创建仓库 创建一个文件夹,作为仓库使用 初始化仓库,在仓库目录的命令行下输入:git init 第一步:创建一个文件,并写入内容,这里写入内容的时候,要把编码设置为utf-8 第二步:输入命令将文件添加到暂存区域:git add README.md 第三步:输入命令将暂存区域的文件提交到git仓库
阅读全文
摘要:svn记录的是每一次版本变动的内容,三角形代表改动的内容 git是将每个版本独立保存 git的三棵树:工作区域、暂存区域、git仓库 工作目录:平时存放项目的地方暂存区域:临时存放改动,即将提交到仓库的信息git仓库:最后存放文件的仓库 git的工作流程: 1.在项目中添加、修改文件2.将需要进行版
阅读全文
摘要:1.下载并安装Git和图形客户端TortoiseGit Git官网:https://gitforwindows.org/ TortoiseGit官网: https://tortoisegit.org/download/ 2.创建git账户 在cmd下输入命令创建用户(勿使用中文):git confi
阅读全文
摘要:一、放大字体 File —> setting —> Keymap —>在搜寻框中输入:increase —> Increase Font Size(双击) —> 在弹出的对话框中选择Add Mouse Shortcut 在弹出的对话框中同时按住ctrl键和鼠标滚轮向上滑。 二、字体缩小 File —
阅读全文
摘要:如:给Pycharm加上头行 # coding:utf-8File—Setting—Editor--Code Style--File and Code Templates--Python Script 后面加上 # coding:utf-8 即可 新建一个py文件
阅读全文
摘要:设置字体风格:File—Setting—Editor-Color Scheme-Color Scheme Font-把Scheme设置为:WarmNeon
阅读全文
摘要:首先电脑安装svn,并且确svn/bin下面有svn.exe文件 没有bin/svn.exe解决方法: 重新打开TortoiseSVN安装文件-Modify-Next后在command line client tools选项修改为Will be installed on local hard dri
阅读全文
摘要:目录文件的浏览、管理及维护(一) 1.Linux文件系统的层次结构 1)Linux文件系统的树状结构:在Linux或UNIX操作系统中,所有的文件和目录都被组织成一个以根节点开始的倒置的树状结构。 2)目录的定义:目录相当于Windows中的文件夹,目录中存放的既可以是文件,也可以是其他的子目录。
阅读全文
摘要:一、UNIX和Linux操作系统概述 1.UNIX是什么 1)UNIX的定义: UNIX是一个计算机操作系统,一个用来协调、管理和控制计算机硬件和软件资源的控制程序。 2)UNIX操作系统的特点:多用户和多任务 a)多用户表示在同一时刻可以有多个用户同时使用UNIX操作系统而且他们互不干扰; b)多
阅读全文
摘要:1. 计算机操作系统简介 1) 操作系统的定义:操作系统是一个用来协调、管理和控制计算机硬件和软件资源的系统程序,它位于硬件和应用程序之间。 2) 操作系统的内核的定义:操作系统的内核是一个管理和控制程序,负责管理计算机的所有物理资源,其中包括。文件系统、内存管理、设备管理和进程管理。 3) 两种操
阅读全文
摘要:流水线可以把多个任务串起来,比如发布版本的一系列流程 配置流水线任务 构建语法为Groovy,执行3次test(job名) node { stage("test") { echo "run test" build job: "test" } stage("test") { echo "run tes
阅读全文
摘要:创建部署任务 选择运行节点 选择使用shell # 如果是持续进程,这里最好加一个kill进程的命令 判断如果/root/production目录存在,就删除if [ -d /root/production ];then rm -rf /root/productionfi 创建/root/produ
阅读全文
摘要:新建任务 指定在哪台节点运行 添加要监控的git地址和使用账号,此账号为设置节点时配置公私钥时设置的ssh登录账号 设置检查代码是否有变更的频率,每三分钟检查一次,如果检查到有变更就构建 修改文件再提交,触发构建 修改文件 推送到服务器 再看Jenkins,已经触发自动构建 由于没有添加构建步骤,所
阅读全文
摘要:添加slave 给节点起个名字 1.远程工作目录:/test/workspace--这个地址是测试机的 jenkins 的 workspace 工作目录,自己随便写个本机的路径2.用法--尽可能的使用这个节点:其它的job也能在这台机器上运行,如果只想运行测试自动化代码,就不选这个--只允许运行绑定
阅读全文
摘要:准备一个用于测试脚本,就打印hello world 新建job 配置: 添加步骤 立即构建
阅读全文
摘要:安装jdk环境: yum search jdk 装 1.8版本的:yum install -y java-1.8.0-openjdk 安装Jenkins wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/je
阅读全文
摘要:在css中,id用#表示,class用.表示,要定位标签直接写标签名,其他属性就用[xxx='xxx'] 一、css定位 1、属性定位:可以通过任意属性定位,不局限于id、class、name、tag、link这五种属性 1.通过id定位driver.find_element_by_css_sele
阅读全文
摘要:xpath可以以标签定位,也可以@任意属性: 如:以input标签定位:driver.find_element_by_xpath("//input[@id='kw']") 如:@type属性:driver.find_elements_by_xpath("//input[@type='text']")
阅读全文
摘要:此方法可破解简单的验证码,如: 注:中文识别正在寻找办法 安装: 1、python3 2、Pillow 3、pytesseract 4、tesseract-ocr 下载地址:https://pan.baidu.com/s/1kXIsg1S9CqgSpgzeg9T59Q 安装tesseract-ocr
阅读全文
摘要:先点击第一个,再对第二个进行操作,否则操作失败 driver.find_element_by_css_selector(".pwd").click()driver.find_element_by_css_selector(".password").send_keys("XXX")
阅读全文
摘要:selenium 执行jQuery/js语法 driver.execute_script(jQuery/js) 1、jQuery jQuery只支持css语法: jquery = '$(CSS).val("XXX");' # 根据css语法定位到元素,输入内容jquery = '$(CSS).val
阅读全文
摘要:from selenium import webdriverfrom selenium.webdriver.support.wait import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as E
阅读全文
摘要:第一种,测试数据放在Excel里面 test_Login: import unittestimport timeimport ddtimport osfrom selenium import webdriverfrom SWYJR.common.readexcel import ExcelUtilf
阅读全文
摘要:此弹窗是浏览器自带的弹窗,不是html中的元素 from selenium import webdriverfrom selenium.webdriver.common.action_chains import ActionChainsimport timefrom selenium.webdriv
阅读全文
摘要:# from selenium import webdriverfrom selenium.webdriver.common.action_chains import ActionChainsimport timedriver = webdriver.Firefox()url = "https://
阅读全文
摘要:显式等待(sleep): 固定的等待(死等),不管页面有没有加载完,都等设置的时间过了再做下一步操作 隐式等待 全局生效,只写一次即可(仅当前页面),缺点:如果页面一直转圈,如:js出错将等待到所设置的时间完成若有页面切换,需sleep等待新页面出现后,再使用此方法 如:在35秒内,等待操作完成,完
阅读全文
摘要:from selenium import webdriverfrom selenium.webdriver.common.by import Byimport time driver = webdriver.Firefox()driver.get("http://bj.ganji.com/")tim
阅读全文
摘要:iframe是HTML里面嵌套HTML的一种框架 1.查看iframe 1.Top Window:可直接定位 2.iframe#i:说明此元素在iframe上 3.iframe显示为空:(id或name为空) 4.右边这个看到是空的(2层iframe) 以126邮箱为例 from selenium
阅读全文
摘要:1、鼠标事件:# 每个模拟事件后需加.perform() 才会执行# context_click() 右击# double_click() 双击# drag_and_drop(source, target) 拖动# move_to_element() 鼠标悬停# move_to 移动 from se
阅读全文
摘要:# 八种单数定位方式:elementfrom selenium import webdriverimport time driver = webdriver.Firefox()time.sleep(2) # 等待2秒driver.get('https://www.baidu.com') 1、id定位
阅读全文
摘要:# 1.打开Firefox浏览器from selenium import webdriverdriver = webdriver.Firefox()driver.get("https://www.baidu.com") # 2.打开Ie或Chrome浏览器-->先将驱动文件放到python根目录 f
阅读全文
摘要:设置好,填入对应的host,操作-立即运行过滤设置 效果
阅读全文
摘要:前言 在点Actions时候出现Export Failed:The root certificate could not be located.最近有很多小伙伴在fiddler导出证书的时候,遇到无法导出的问题,收集了几种解决办法,供参考。 一、证书无法导出 1.在点Actions时候出现Expor
阅读全文
摘要:前言 在使用fiddler抓包的时候,查看请求类型get和post每次只有点开该请求,在Inspectors才能查看get和post请求,不太方便。于是可以在会话框直接添加请求方式。 一、添加会话框菜单 1.点会话框菜单(箭头位置),右键弹出选项菜单 2.选择Customize columns选项,
阅读全文
摘要:前言 为什么要保存会话呢?举个很简单的场景,你在上海测试某个功能接口的时候,发现了一个BUG,而开发这个接口的开发人员是北京的一家合作公司。你这时候给对方开发提bug, 如何显得专业一点,能让对方心服口服的接受这个BUG呢?如果只是截图的话,不是很方便,因为要截好几个地方还描述不清楚,不如简单粗暴一
阅读全文
摘要:前言 先给大家讲一则小故事,在我们很小的时候是没有手机的,那时候跟女神聊天都靠小纸条。某屌丝A男对隔壁小王的隔壁女神C倾慕已久,于是天天小纸条骚扰,无奈中间隔着一个小王,这样小王就负责传小纸条了。有一天小王忍不住偷偷打开A男表白的纸条,把里面内容改了下,改成了:我的同桌小王喜欢你。最后女神C和小王走
阅读全文
摘要:前言上一篇讲过get请求的参数都在url里,post的请求相对于get请求多了个body部分,本篇就详细讲解下body部分参数的几种形式。 一、body数据类型 常见的post提交数据类型有四种: 1.第一种:application/json:这是最常见的json格式,也是非常友好的深受小伙伴喜欢的
阅读全文
摘要:前言 上一篇介绍了Composer的功能,可以模拟get和post请求,get请求有些是不带参数的,这种比较容易,直接放到url地址栏就行。有些get请求会带有参数,本篇详细介绍url地址格式。 一、url详解 1.url就是我们平常打开百度在地址栏输入的:https:www.baidu.com,如
阅读全文
摘要:前言 Fiddler最大的优势在于抓包,我们大部分使用的功能也在抓包的功能上,fiddler做接口测试也是非常方便的。 对应没有接口测试文档的时候,可以直接抓完包后,copy请求参数,修改下就可以了。 一、Composer简介 点开右侧Composer区域,可以看到如下界面,就是测试接口的界面了 1
阅读全文
摘要:前言 本篇简单的介绍下fiddler界面的几块区域,以及各自区域到底是干什么用的,以便于各好的掌握这个工具 一、工具简介 1.第一块区域是设置菜单,这个前面2篇都有介绍 2.第二块区域是一些快捷菜单,可以点下快捷功能键 3.第三块左边是抓捕的请求会话列表,每一个请求就是一个会话 4.第四块右边上方区
阅读全文
摘要:前言 前面两篇关于Fiddler抓包的一些基本配置,配置完之后就可以抓到我们想要的数据了,接下来就是如何去分析这些数据。 本篇以博客园的请求为例,简单分析get与post数据有何不一样,以后也能分辨出哪些是get,哪些是post了。 一、get请求 1.打开fiddler工具,然后浏览器输入博客首页
阅读全文
摘要:前言 fiddler抓手机app的请求,估计大部分都会,但是如何只抓来自app的请求呢? 把来自pc的请求过滤掉,因为请求太多,这样会找不到重要的信息了。 环境准备: 1.电脑上已装fiddler 2.手机和电脑在同一局域网 一、设置 1.fiddler>Tools>Fiddler Options>
阅读全文
摘要:前言 fiddler是一个很好的抓包工具,默认是抓http请求的,对于pc上的https请求,会提示网页不安全,这时候需要在浏览器上安装证书。 一、网页不安全 1.用fiddler抓包时候,打开百度网页:https://www.baidu.com 2.提示:网页不安全 二、fiddler设置 1.打
阅读全文
浙公网安备 33010602011771号