11 2021 档案
摘要:关联接口 关联接口表示上一个接口的返回值,提供给下一个接口作为参数使用 常见的比如登录以后才能使用的接口,这种接口一般是需要关联会话值sessionid或token,sessonid和token一般可以在cookies中获得 如果是登录以外的其他接口,需要在接口返回text中查找数据来做关联 coo
阅读全文
摘要:接口安全机制 用户认证 数字签名 接口加密 用户认证 用户认证的意义 认证是客户端要给服务器出示一些自己的身份证明,来证明自己是谁,一旦服务器知道了客户端的身份,就可以判定客户端是否被允许进行访问,用于辨别访问服务器的用户的合法性 常见的用户认证方式 Basic基本认证(在一开始访问服务器的时候,服
阅读全文
摘要:禁用插件 例如,关闭 doctest 插件 pytest -p no:doctest
阅读全文
摘要:获取用例执行性能数据 获取最慢的10个用例的执行耗时 pytest --durations=10
阅读全文
摘要:生成 JUnitXML 格式的结果文件 这种格式的结果文件可以被Jenkins或其他CI工具解析 pytest --junitxml=path
阅读全文
摘要:设置断点 在用例脚本中加入如下python代码,pytest会自动关闭执行输出的抓取,这里,其他test脚本不会受到影响,带断点的test的上一个test正常输出 import pdb; pdb.set_trace()
阅读全文
摘要:执行失败的时候跳转到 PDB 执行用例的时候,跟参数 --pdb,这样失败的时候,每次遇到失败,会自动跳转到 PDB pytest --pdb # 每次遇到失败都跳转到 PDB pytest -x --pdb # 第一次遇到失败就跳转到 PDB,结束测试执行 pytest --pdb --maxfa
阅读全文
摘要:修改Python traceback(终端)输出 pytest --showlocals #在回溯中显示局部变量 pytest -1 #显示局部变量(快捷方式) pytest --tb = auto #(默认)'long’追溯第一个和最后一个 pytest --tb = long #详尽,信息丰富的
阅读全文
摘要:函数数据参数化 方便测试函数对测试数据的获取。 方法: parametrize(argnames, argvalues, indirect=False, ids=None, scope=None) 常用参数: argnames:参数名 argvalues:参数对应值,类型必须为list 当参数为一个
阅读全文
摘要:标记为预期失败函数 标记测试函数为失败函数 方法: xfail(condition=None, reason=None, raises=None, run=True, strict=False) 常用参数: condition:预期失败的条件,必传参数 reason:失败的原因,必传参数 使用方法:
阅读全文
摘要:跳过测试函数 根据特定的条件,不执行标识的测试函数. 方法: skipif(condition, reason=None) 参数: condition:跳过的条件,必传参数 reason:标注原因,必传参数 使用方法: @pytest.mark.skipif(condition, reason="x
阅读全文
摘要:Pytest配置文件 pytest的配置文件通常放在测试目录下,名称为pytest.ini,命令行运行时会使用该配置文件中的配置 #配置pytest命令行运行参数 [pytest] addopts = -s ... # 空格分隔,可添加多个命令行参数 -所有参数均为插件包的参数配置测试搜索的路径 t
阅读全文
摘要:显示print内容 在运行测试脚本时,为了调试或打印一些内容,我们会在代码中加一些print内容,但是在运行pytest时,这些内容不会显示出来。如果带上-s,就可以显示了。 运行模式 pytest **.py -s 另外,pytest的多种运行模式是可以叠加执行的,比如说,你想同时运行4个进程,又
阅读全文
摘要:并发测试 当cases量很多时,运行时间也会变的很长,如果想缩短脚本运行的时长,就可以用多进程来运行。 Pytest测试框架提供pytest-xdist可以并发执行测试用例,来提升测试用例的执行速度,节省自动化测试时间 pytest-xdist的特点 用例之间是独立的,用例之间没有依赖关系,用例可以
阅读全文
摘要:重试运行cases 在做接口测试时,有事会遇到503或短时的网络波动,导致case运行失败,而这并非是我们期望的结果,此时可以就可以通过重试运行cases的方式来解决。 1)安装pytest-rerunfailures: pip install -U pytest-rerunfailures 2)运
阅读全文
摘要:结构介绍 common 公共代码文件夹 casedata.py import pandas from common.log import log def read_cases(xlsfile, prefixs, dict_indexs, columns=None, col_type=None): #
阅读全文
摘要:面向对象编程 import configparser, pymysql, requests, pandas, os class Conf: #配置文件类,向类外提供数据:接口地址一部分url,提供数据库信息dbinfo,类外没必要使用which_server和which_db(所以封装起来) def
阅读全文
摘要:面向过程编程之函数模型 import configparser, pymysql, requests, pandas, os #读入口配置文件函数 def read_entry(): #无参,返回本次测试用的接口服务器和数据库的入口名 conf=configparser.ConfigParser()
阅读全文
摘要:#面向过程编程之线性编码方式(线性模型) #面向过程编程之线性编码方式(线性模型) #导入模块 import configparser, pymysql, requests, pandas #创建配置文件解析器对象 conf=configparser.ConfigParser() #读入口名 con
阅读全文
摘要:#记录日志 日志的作用 1)记录测试过程中的重要事件(成功执行了什么代码,执行代码出了何种错误、执行代码有无发现缺陷) 2)向控制台输出日志信息(相当于之前的print) 3)将日志信息记录到文件 日志的等级 1)有低到高的分类 debug、info、warning、error、critical 调
阅读全文
摘要:生成测试报告 测试报告中至少可以显示执行了多少条用例,用例信息如何,多少条用例执行成功,多少条用例执行失败,多少用例出错 使用步骤 1)安装pytest-html插件 pip install pytest-html 2)导入pytest import pytest 3)运行测试生成测试报告 代码中运
阅读全文
摘要:单词/缩写 释义 abstract test case 抽象测试用例 acceptance 验收 acceptance criteria 验收准则:为了满足组件或系统使用者、客户或其他授权实体的需要,组件或系统必须达到的准则。 acceptance testing 验收测试:一般由用户/客户进行的确
阅读全文
摘要:数据驱动测试 测试函数+循环执行用例 pytest认为,测试函数只执行一次,就是一次测试;只要循环在函数内部,执行多少次循环都是一个测试 assert一旦断言失败,后续代码将不再执行,所以当断言失败时,退出本次测试函数执行,由于只有一个测试函数,所以整个测试结束 至于循环调用测试函数,pytest不
阅读全文
摘要:断言 pytest测试结果通过还是失败与if等无关,只认识pytest断言 如果没有断言,执行pytest测试用例时,pytest始终会说测试通过 断言的形式 assert 表达式,断言失败消息文本 只能指定断言失败消息,不能指定断言成功消息 断言失败消息可以省略 当断言失败时,pytest会抛出断
阅读全文
摘要:pytest测试固件 测试固件也叫测试夹具,用于指定初始化代码或清理代码/扫尾工作 fixture fixture修饰器来标记固定的工厂函数,在其他函数,模块,类或整个工程调用它时会被激活并优先执行,通常会被用于完成预置处理和重复操作 使用方法: # 导入pytest import pytest #
阅读全文
摘要:用例运行级别 模块级(setup_module/teardown_module)开始于模块始末,全局的 函数级(setup_function/teardown_function)只对函数用例生效(不在类中) 类级(setup_class/teardown_class)只在类中前后运行一次(在类中)
阅读全文
摘要:运行用例总结 在第N个用例失败后,结束测试执行 pytest -x # 第x次失败,就停止测试 pytest --maxfail=2 # 出现2个失败就终止测试 指定测试模块 pytest test_mod.py 指定测试目录 pytest testing/ 通过关键字表达式过滤执行 pytest
阅读全文
摘要:VMware16安装启动 右键启动[VMware-workstation-full-16.1.2-17966106] 在许可证文本框中输入任意一行: ZF3R0-FHED2-M80TY-8QYGC-NPKYF YF390-0HF8P-M81RQ-2DXQE-M2UT6 ZF71R-DMX85-08D
阅读全文
摘要:#被测程序 创建calc.py文件 class Calc: def add(self,a,b): return a+b def sub(self,a,b): return a--b #预留缺陷 if __name__=='__main__': #调试 c=Calc() print(c.add(3,5
阅读全文
摘要:创建测试函数、测试类和测试方法 def 测试函数(): 测试代码 class 测试类名: def 测试方法名(self): 测试代码 # 测试函数和测试类可以一起使用 pytest测试用例的含义和规则 1)pytest测试用例即符合pytest规则的测试模块、测试函数、测试方法 2)测试模块test
阅读全文
摘要:Pytest测试框架 pytest是python的一种单元测试框架,与python自带的unittest测试框架类似,但是比unittest框架使用起来更简洁,效率更高 Pytest主要特点 非常容易上手,入门简单,文档丰富,文档中有很多实例可以参考 能够支持简单的单元测试和复杂的功能测试 支持参数
阅读全文
摘要:unittest搭建项目目录结构 casedata.py文件代码 import pandas from project_M1.common import log def read_cases(excel, columns=[]): # 读取excel用例中的指定列 excel = '../excel
阅读全文
摘要:给多人发邮件 导入模块 import smtplib from email.mime.text import MIMEText from email.utils import formataddr 登录邮箱 smtp=smtplib.SMTP('smtp.163.com',25) smtp.logi
阅读全文
摘要:发送1个附件 导入模块 import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from email.utils import formataddr 登录邮箱
阅读全文
摘要:发送HTML正文邮件 邮件正文中可以使用HTML标记 mail=MIMEText(mailbody, 'html', 'utf-8') 导入模块 import smtplib from email.mime.text import MIMEText from email.utils import f
阅读全文
摘要:发送纯文本邮件 导入模块 import smtplib from email.mime.text import MIMEText from email.utils import formataddr 登录邮箱 smtp=smtplib.SMTP('smtp.163.com',25) smtp.log
阅读全文
摘要:发送邮件 1)导入模块 import smtplib from email.mime.text import MIMEText from email.utils import formataddr MIME含义 Multipurpose Internet Mail Extensions,多用途互联网
阅读全文
摘要:DDT数据驱动模块总结 a)ddt测试本身的意思是数据驱动测试(Data Driven Test),说白了就是使用用例来驱动测试,用例要称为参数, ddt测试也叫做参数化测试 b)ddt主要用于执行大量用例,如果不用ddt或其他参数化方式,那就自己写循环,自己写循环,一旦断言失败,测试就会停止 c)
阅读全文
摘要:调试project_M1 目的:运用ddt数据驱动模块调试完善exam项目测试脚本 调试postdata中的第十五行考虑数据类型转换 import requests from project_M1.common import log def post(address, argument, case_
阅读全文
摘要:什么是DDT Data Driver Test 由外部数据集合来驱动测试用例,一组不同的数据来执行相同的操作(一份脚本),测试数据和测试操作进行完全的分离的脚本设计模式 从数据文件读取输入数据,通过变量的参数化,将测试数据传入测试脚本,不同的数据文件对应不同的测试用例 在这种模式下数据和脚本分离,脚
阅读全文
摘要:测试套件和测试运行器总结 a)调试时可以使用unittest.main() b)正式执行测试时,一般会把执行代码放入一个单独的py文件中(不要与测试类放在一起),此时需要创建测试套件,以及测试运行器 创建套件 suite = unittest.defaultTestLoader.discover('
阅读全文
摘要:使用日期时间命名测试报告 导入time模块 import time 获取日期时间 now=time.strftime("%Y%m%d %H%M%S") strftime用于获得指定格式的日期时间字符串 组装报告文件名 report_filename=now+'_result.html' 调试proj
阅读全文
摘要:测试运行器 测试运行器提供run()方法来执行测试用例,并在执行完成后将测试结果输出并生成测试报告 unittest测试运行器的分类 unittest.TextTestRunner -- 文本测试运行器 真正测试使用较少 HTMLTestRunner -- 生成网页测试报告 TextTestRunn
阅读全文
摘要:测试套件(Test Suite) 也称测试集、测试组件,用于把多个测试用例集合到一起,也可以将多个测试套件组合在一起,形成更多的测试用例集合,这个集合仍然称为测试套件 定义测试套件 suite=unittest.TestSuite() 创建一个测试套件,名为suite 需要首先导入unittest
阅读全文
摘要:测试固件(Test Fixture) 也称用例包裹方法 测试固件是固定的测试代码,整合了代码的公共部分 用于处理测试执行之前的准备工作和测试执行后的清理工作 如果代码需要在整个模块之前做,可以使用setUpModule,把代码放到方法体中 如果代码需要每个类之前做,可以使用setUpClass,把代
阅读全文
摘要:unittest注意事项 使用unittest测试框架:主要处理初始化代码测试 unittest使用 1)一般将测试代码放在一个或多个模块中比如登录接口login.py,注册接口的signup/.py 2)在一个模块(py文件)中,创建一个或多个测试类,必须继承unittest.TestCase,类
阅读全文
摘要:断言 断言的含义 断言用于判断测试结果的正确性,即比对预期结果与实际结果是否相等或匹配 unittest提供断言方法进行断言 断言语句要写在测试用例中 断言通过时,测试结果中默认显示. 断言失败时,测试结果中默认显示F(Failure),并抛出异常 出现断言失败时,测试代码不会停止而是继续执行 断言
阅读全文
摘要:运行测试 unittest.main() 自动调用以test开头的测试用例 一般用于调试测试代码 运行测试时,先按ASCII顺序对类名进行排序,再对每个类中的测试用例名按ASCII顺序排序,按照顺序执行测试用例 unittest运行机制 """ unittest运行机制 """ import uni
阅读全文
摘要:什么是测试框架 (1)编写好一些可以复用的代码,以便于测试 (2)测试框架可以简化测试,减少测试编码 测试框架模型 (1)线性模型 1)代码雍容、冗余、复用性差 (2)函数模型 1)复用性较强 (3)面向对象模型 1)复用性较强 (4)使用模块的模型 1)团队协作编程的最基本单位 2)复用性强 3)
阅读全文
摘要:模块简介 (1)一个模块(就是py文件)存储解决一个大问题的相关代码(多个函数、多个类等) (2)模块是员工分工编程的基本单位 针对面向模块测试框架 1)面向过程的编程 堆代码 函数 2)面向对象的编程 a)创建类 配置文件相关类、数据库相关的类 具体过程: 编写构造方法 定义成员变量 编写普通成员
阅读全文
摘要:面向过程 a.1)线性编码方式 往py文件中罗列代码,代码按照顺序编写,按照顺序执行 缺点:代码量很多,不方便调试,不方便维护,不方便复用 a.2)使用函数封装代码 将代码按照功能进行分类,一个函数实现一个或多个功能,调试、维护更为方便,也可以复用了 在实际工作编码时,会使用这种方式 面向对象步骤
阅读全文
摘要:使用函数与类封装框架 面向对象的编程过程 1.创建类 构造方法(可以省略,要写的话必须写__init__(self),一般用于定义成员变量) 成员方法(可以省略,名字自己起,self参数必须写,而且写在第一个,用于处理数据) 2.创建对象 对象名 = 类名() -- 实例化 3.调用方法 对象名.成
阅读全文
摘要:使用面向对象实现测试框架 目录结构 common -- main.py conf -- db.conf entry.ini server.conf excelcase -- login.xlsx signup.xlsx initsqls -- login.sql signup.sql log 类 与
阅读全文
摘要:什么是自动化测试框架 框架是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法 也可以认为,框架是可被应用开发者定制的应用骨架 自动化测试框架由一个或多个自动化测试基础模块、自动化测试管理模块、自动化测试统计模块等组成的工具集合 使用函数实现测试框架配置 在project_h1中修
阅读全文
摘要:使用函数封装请求方法 Response.headers['Content-Type'] 获得响应头中的响应内容类型 text/html html文本格式 json json格式 修改project_h1目录test.py 目的:封装post方法 作用: 把requests.post方法以及对比响应结
阅读全文
摘要:project_h1目录在test.py文件,编写log()函数 目的:使用log()方法生成日志 import logging,time def log(): # 创建日志对象 logger = logging.getLogger() # 禁止日志重复输出 ,每个日志输出一次 if not log
阅读全文
摘要:自定义日志函数 1)日志基础 a)日志用于详细记录重要的步骤和操作,可供测试人员更好的调试脚本 b)日志可以输出到控制台、文件,也可以同时输出到控制台和文件 c)输出到控制台时,可以代替print d)日志输出等级 日志等级由低到高分别是DEBUG、INFO、WARNING、ERROR、CRITIC
阅读全文
摘要:测试发布会接口 复制project_h1生成project_h2 1)准备sign.txt存放sql语句 INSERT INTO sign_event(name,limit,address,start_time) VALUES('接口自动化测试发布会',5,'北京亚运村','2021-11-21 1
阅读全文
摘要:conn_db() 功能:连接数据库 返回值:数据库连接对象 说明:调用db_info()函数,获得连接数据库的参数字典 project_h1目录中test.py运用conn_db()函数连接数据库 import pymysql def conn_db(): # 连接数据库的函数 try: dbin
阅读全文
摘要:连接数据库函数 向函数传递字典实参 data={'k1' : 'v1' , 'k2' : 'v2'} def test_func(k1, k2): 参数名必须与字典键同名 test_func(**data) **表示获得字典键的值,1个*只能获得键的名称 创建函数进行读取 """ 字典转为关键字参数
阅读全文
摘要:read_sqls(sqlfiles) 功能:读取要执行的sql语句到列表 参数:sql文件名列表 不指定实参时,读取所有sql文件 需判定列表是否存在元素 实参必须使用列表形式,可自主优化 返回值:sql语句列表 说明:处理sql文件中的空行、注释行、行尾换行符 创建sqls01.txt文件存放e
阅读全文
摘要:初始化sql文件函数 储备知识 列表推导式 列表=[ ... ] 新列表=[ 带i的结果表达式 for i in 列表 if 条件表达式] 使用列表推导式,计算列表[1,2,3]中每个数的平方 """ 目的:使用列表推导式,计算列表[1,2,3]中每个数的平方 """ a = [1,2,3] # 普
阅读全文
摘要:函数原型 entry() 功能:读取各服务器的节点名 返回值 (接口服务器节名,数据库服务器节名)元组 project_h1目录下创建test.py文件 目的:使用entry()函数读取各服务器的节点名 import configparser,os def entry(): """ 读入口函数:en
阅读全文
摘要:配置文件 配置文件 至少可以分出:接口服务器、数据库服务器 配置文件存储服务器的相关信息(主要包括IP地址、端口号、应用名、接口名、数据库用户名、数据库密码、数据库端口号、数据库名等) 一般一个配置文件只存储一种服务器的相关信息,通常把多个接口服务器的信息存在同一个配置文件中,把多个数据库服务器信息
阅读全文
摘要:函数规化 函数规化 -- 根据功能进行分割,如果很多工作连接紧密可以制作成函数,进行反复使用 读入口函数 读配置文件函数 读初始化sql文件函数 连接数据库函数 数据库初始化函数 读用例文件函数 落库检查函数 测试登录接口函数 测试注册接口函数 初始化sql文件 初始化sql文件 根据人员分工分离初
阅读全文
摘要:request自动化测试基础步骤 自动执行初始化sql语句 初始化sql语句存入文件中(目前存入了一个文件,工作者按业务存入多个文件) 读取sql文件 循环执行sql语句 自动执行Excel用例 把测试用例写入excel中(用例名称、测试数据/相当于发送请求的参数/字典格式、预期结果、落库预期sql
阅读全文
摘要:eval()函数 eval函数用来执行一个字符串表达式,并返回表达式的值,可以理解为剥离字符串外的引号,可用于将字符串转换为字典 自动执行excel登陆接口测试用例 自动执行excel登陆接口测试用例 初始化sql:sqls01.txt -- 注册接口:test02、test03 delete fr
阅读全文
摘要:读Excel文件 安装pandas pip install pandas; 导入pandas import pandas 读文件 xlsfile=pandas.read_excel('文件名', sheet_name, usecols) # sheet_name=0指定读取第1张sheet表,可省,
阅读全文
摘要:读取csv文件 本质上与记事本相似 import csv csvfile = open('csv文件名') data = csv.reader(csvfile) data是列表 ,包含列明,然后下标访问数据 for line in data: print(line[0],line[1]) 使用csv
阅读全文
摘要:查看文件内容 for 变量 in 文件对象: print(变量) 注意:一行作为一个数据,一行是一个整体 1)把行分成几个列使用 for 变量 in 文件对象: 变量2=变量.split()#根据空白符拆分变量为多个列数据,存入变量2列表中 变量3=变量.split(',')#根据逗号进行拆分数据
阅读全文
摘要:读取存放sql语句的文件 """ 目的:读取存放sql语句的文件 -- sql文件 将初始化sql语句放到文件中,加注释,加空行区分行,使用代码输出所有行,将sql语句存入列表并查看 提示: sql文件未必放到.sql类型的文件中,txt完全支持 sql语句最好一行写一句,建议分号结尾 sql语句中
阅读全文
摘要:读txt文件 变量=open('文件名', 'r',encoding='utf-8') 表示文件中的数据读出来,存入对象,但是print是看不到内容的 如果出现乱码 加上encoding='utf-8' open表示打开文件 文件名如不在当前目录下,需要指定路径 r表示打开文件用于读数据 读文件时,
阅读全文
摘要:使用文件存储大量数据的场合 初始化sql语句 用例数据 参数数据 预期响应结果 落库检查sql 可以直接写好具体sql查询参数 跟业务有关,也可以考虑放在代码中,使用字典传参 落库预期结果
阅读全文
摘要:zip函数 将多个可迭代对象中的每个元素,一一对应的组装/打包成一个元组 a = [1,2,3] b = [4,5,6] c = zip(a,b) c的结果是 (1, 4) (2, 5) (3, 6) 解压与遍历 print(*c) 解包时,只能解包1次 for i, j in c: for i,
阅读全文
摘要:使用列表存储初始化sql语句 1、使用列表存储sql语句,使用循环遍历列表 案例1:将所有的数据库初始化代码写入列表,然后执行这些代码 思路: 仍然使用线性编码 列表存储多个数据(很多sql) 循环遍历列表 2、缺点 (1)代码臃肿 (2)数据与代码不分离 自动化执行多条测试用例步骤 1)数据库初始
阅读全文
摘要:接口自动化单条测试用例执行步骤汇总 1)步骤汇总 数据库初始化 将需要准备的数据写到数据库中,比如登陆之前要准备账号和密码数据 准备测试用例的数据 一条用例数据直接放在代码中,很多用例数据放到文件中 发送请求 将用例数据发送给接口 验证接口返回的正确性 验证落库的正确性(增删改) 2)数据库初始化
阅读全文
摘要:验库 -- 检查落库的正确性 功能:用于检查数据库数据的正确性 场景:常用于增加、修改、删除了数据库数据时 1)验库的步骤 导入模块 a)连接数据库 b)指定sql语句 查询数据库中关键数据的行数,根据行数判断落库是否正确 c)执行sql语句 cursor=conn.cursor() 不能多次使用c
阅读全文
摘要:判断响应结果正确性 1)对于text/html类型的返回值,使用 r.text == in 2)对于json类型的返回值,使用 r.json() 整体文档 r.json()['key'] == 自动化执行测试,准备数据,检查结果 #初始化数据库 import pymysql #导入pymysql c
阅读全文
摘要:使用线性编码自动化执行一条测试用例 # 初始化数据库 ## 安装pymysql pip install pymysql --user ## 导入模块 import pymysql ## 连接数据库 1)conn=pymysql.connect(host='数据库服务器IP', user='数据库用户
阅读全文
摘要:准备自动化测试数据 1)自动执行初始化sql语句(通过python操作数据来实现) a)安装pymysql win+R启动运行窗口,输入cmd,启动dos窗口输入命令: pip install pymysql 验证是否安装成功 win+R启动运行窗口,输入cmd,启动dos窗口输入命令: pip l
阅读全文
摘要:接口自动化测试怎么做 1)确定接口测试范围和目标 测试范围:分析需要测试哪些接口 测试目标:测试功能还是性能还是安全性 2)接口需求分析 接口地址:协议://接口服务器IP或域名:端口号/应用名/接口名或功能名/ 数据传输的方法:get、post、put、head...... 参数:需要哪些参数,哪
阅读全文
摘要:requests.session() requests.session()的作用,session会话 用于保持该session为全局变量,其他接口都使用该session发送请求 使用方法 s=requests.session() s.get(...) s.post(...) s.get和s.post
阅读全文
摘要:requests.get(url, cookies) 说明 用于携带cookies发送请求 post方法也支持cookies,语法一致,具体请求方法看需求中的规定 用法1 cookies={'r.cookies中的键':'r.cookies中的值'} 偶尔、短期可用的方式,但要注意一般cookie都
阅读全文
摘要:#什么是关联接口 ①多个接口之间存在依赖关系 <1>让你测试登录成功后的页面,登录成功不是你测 <2>让你测试退单(取消订单)接口,但是下单不是你测 ❤️>业务流程测试:测试下单后,退单功能正确性 HTTP无状态 是指协议对于交互性场景没有记忆能力 <1>上一个网页的数据,只传递一次给下一个网页(接
阅读全文
摘要:重定向 requests.post(url, allow_redirects) 向登录接口传递了账号和密码数据后,url跳转到了登录后的首页页面,这里就是页面自动重定向了 通过响应对象.url是否是原始url判断是否发生了重定向 requests.post默认是allow_redirects=Tru
阅读全文
摘要:requests步骤总结 导包 import requests 指定接口地址 参数字典 发送请求 获得响应结果 r.text r.json() r.json()['键'] 结果比对 r.text 通常使用in 格式:预期结果 in r.text r.json()、r.json()['键'] 通常使用
阅读全文
摘要:判断响应结果的正确性(检查点,断言) 用于比较测试的实际结果与预期结果 常用的比较运算符 == 精确比较 通常用于整体比较 比较适合json格式的响应文本 in 在...中 预期结果 in 实际结果 通常用于部分数据存在性判断 比较适合text/html类型的响应文本 使用正则表达式模糊匹配 re.
阅读全文
摘要:r.request.header和r.request.body的作用 r.request.header用于查看实际的请求头 r.request.body用于查看请求体,多个数据间仍然以&间隔 常用于验证实际的请求头和请求体是否符合设定 请求头中Content-Type表示请求数据的类型 applic
阅读全文
摘要:r.json()['键'] 用于输出json字典中的某个具体项 键区分大小写 使用场景:测试某些重要的、关键的数据是否正确时,可以使用r.json()['键'] 输出响应内容中name的值 """ 接口需求 接口地址:http://192.168.139.137/interface/4/ 方法:ge
阅读全文
摘要:r.json()美化 有时,r.json()返回的字典格式是单行的,可以使用下面的语句美化 res=json.dumps(r.json(), indent=2, ensure_ascii=False) json.dumps()用于将字典形式转化为字符串(序列化) 需要导入包json indent=2
阅读全文
摘要:r.json() 对于json格式的响应内容,可以用r.text和r.json()查看 r.text 返回保留json数据格式的响应文本 JSON中:空值为null,布尔值为小写的true/false,字符串以双引号定界 r.json() json()会使用Requests内置的JSON解码器,将响
阅读全文
摘要:r.text r.text查看json响应结果 非utf8编码格式的中文会显示为\u4f60的形式 \u:unicode码,一般其后跟 4个16进制数字 json只支持utf-8编码 使用r.content.decode('unicode-escape')可将unicode数据转为可显示字符 指定字
阅读全文
摘要:r.content 获得响应内容的二进制形式(字节形式) b开头,如b'\xe7\x99\xbe',\x是16进制,后边跟两位16进制数字 常用于解决中文乱码问题 r.content.decode(r.apparent_encoding) r.content.decode('gbk') #字符集要与
阅读全文
摘要:解决中文乱码问题 r.apparent_encoding 从响应正文中分析出的响应内容的编码方式(utf-8,gbk) r.encoding 从请求头中分析的响应内容编码方式,是当前r.text显示时使用的编码方式 一般用于设置响应内容(r.text)的编码方式,常用于解决中文乱码问题 设置响应内容
阅读全文
摘要:r.url 功能:获得请求的实际url地址 场景:一般用于验证访问的接口的url是否正确 get请求的url字符串会被urlencode函数编码 URL编码是一种浏览器用来打包请求参数及表单参数的格式,参数和参数之间使用&分割,非ASCII码使用%加16进制编码替换,将需转码的字符转为16进制,从右
阅读全文
摘要:响应结果的处理 响应结果存储在Response对象中,可以使用此对象的属性处理响应结果 用r表示Response对象,常见的Response属性 r.url r.encoding r.apparent_encoding r.content、encode、decode r.json() r.reque
阅读全文
摘要:#接口地址书写格式: url='协议://接口服务器 IP地址:端口号/应用名/接口名' #数据格式:为字典类型 data = {'键1':'值1','参数名':'数据','参数名':'数据'} #headers书写格式: head = {'user-agent':'IE/9'} #GET请求书写格
阅读全文
摘要:res=requests.post(url, cookies) 什么是关联接口 ①多个接口之间存在依赖关系 <1>让你测试登录成功后的页面,登录成功不是你测 <2>让你测试退单(取消订单)接口,但是下单不是你测 ❤️>业务流程测试:测试下单后,退单功能正确性 登录时的关联接口测试 ①http无状态
阅读全文
摘要:requests.post方法 requests.post作用 实现使用post方法发送http请求,用于向服务器提交资源 requests.post的场合 根据接口需求确定使用post方法还是其它方法 登陆一般使用post因为安全,get也能但是不安全 访问某某主页使用GET 最简单的判断根据需求
阅读全文
摘要:requests.get方法 requests.get的作用 用于实现使用get方法发送http请求,get方法主要是用来获取资源 根据接口需求来确定是不是使用get方法 requests.get如何使用 res=requests.get(url,params,headers,auth,cookie
阅读全文
摘要:Requests库介绍 如果想用python做接口测试,我们首先有不得不了解和学习的模块。它就是第三方模块:Requests。 虽然Python内置的urllib模块,用于访问网络资源。但是,它用起来比较麻烦,而且,缺少很多实用的高级功能。更好的方案是使用requests。 它是一个Python第三
阅读全文
摘要:什么是sql注入 SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编写时的疏忽,通过SQL语句,实现无账号登录,甚至篡改数据库。 SQL注入攻击的总体思路 1:寻找到SQL注入的位置 2:判断服务器类型和后台数据库类型 3:针对不同的服务器和数据库特点进行
阅读全文
摘要:Python环境安装 在安装python-3.9.6.exe文件上--鼠标右键--以管理身份运行 python安装路径:C:\Program Files\Python39 验证Python是否安装成功 启动dos窗口(启动方式是在开始菜单中搜索:cmd) 命令提示符以管理员的身份运行 pycharm
阅读全文
摘要:Virtualization Technology(VT)中文译为虚拟化技术英特尔(Intel)和AMD的大部分CPU均支持此技术,名称分别为VT-X、AMD-V 设置VT-X的步骤: 第一步: 进入BIOS 组装机以主板分: 华硕按F8/Del、Intel按F12、其他品牌按ESC、F11或F12
阅读全文
摘要:
阅读全文