自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 问答 (1)
  • 收藏
  • 关注

原创 jmeter常见问题

主要用途:接口功能测试、接口性能压测、并发测试、稳定性测试;HTTP 信息头管理器:统一管理请求头,Content-Type、token、鉴权信息,避免每个请求重复添加。HTTP Cookie 管理器:自动接收、存储服务器返回 cookie,自动携带,维持会话。性能测试:关注 TPS、响应时间、错误率、服务器资源(CPU、内存、数据库压力);GUI 占用大量内存,大并发压测容易卡顿、影响测试结果。-n 非 GUI、-t 指定脚本、-l 输出结果文件、-e -o 生成 html 性能报告。

2026-07-24 01:28:11 351

原创 jmeter连接JDBC及用法(二)

1、JDBC Request 1)Variable Name-数据库连接池的变量名 2)Query Type-查询方式,可选择select、update等多种sql查询方式 3)Query-具体的sql语句,写入一个sql语句,暂不支持多个语句查询,后面不需要加分号;若需要写入多个sql语句,在数据库配置页面的URL后加“?allowMultiQueries=true”,并在JDBC Request的Query Type中选择Calleble Statement,每条语句后面用分号隔开 4.

2022-01-08 19:55:01 2761

原创 jmeter连接JDBC及用法(一)

1、连接JDBC-通过JDBC Connection Configuration Variable Name For created Pool:数据库连接池的变量名,之后JDBC request可以通过选择不同的连接池名来选择不同的数据库连接。变量名不能重名。 Connection Pool Configuration:JDBC连接池配置,一般使用默认值即可。 1) Max Number of Connections:数据池允许的最大连接数,一般使用默认值0 2) Max Wait (m...

2022-01-05 23:14:19 1141

原创 pytest(五)参数化

pytest参数化的实现,使用装饰器来实现 @pytest.mark.parameterize(argnames,argvalues) argnames表示参数名称,是一串字符,多个桉树之间由都好隔开"username,password" argvalues表示参数化的数据,用元组来表示,[("13825110000‘,”123456“),(13900000000”,“111111”)] argname的参数个数要遇argvalue里面的测试数据个数要相同,否则会报错...

2021-08-24 11:00:41 330

原创 pytest(四)插件之报告、排序、重试、跳过

一、测试报告 安装pytest测试报告插件 1.在线安装 pip install pytest-html 2.离线安装 下载对应的离线安装包,解压后进入对应目录,执行python setup.py install 3.pycharm安装 flie-setting-project-project interpreter-add:pytest-html install 使用 在pytest配置文件中配置报告文件地址 ...

2021-08-13 11:08:29 626

原创 pytest(三)配置文件

一、配置文件 1. pytest配置文件主要用于定位测试文件及测试类和方法,更便捷的执行测试; 配置文件只允许使用以下三个文件名称: pytest.ini tox.ini setup.cfg 2. 配置文件内容 [pytest]------------------------------表示该文件为pytest的配置文件 addopts = -s -v---------------------执行用例的参数 testpaths = ./scripts--------------执行用例..

2021-08-11 11:58:54 471

原创 pytest(二)fixture实现

pytest方法级别的fixture是针对每个测试方法在执行方法前执行fixture初始化的操作,在执行完测试方法后执行fixture销毁的操作 初始化的操作方法: def_setup(): 销毁操作的方法: teardown(self): 在每执行一个用例前和执行后的操作放在fixture中可以提高工作效率 import time def add(a,b): return a + b # 定义一个pytest类 class Test_add: # 添加类...

2021-08-11 10:17:32 371

原创 pytest(一)框架的使用

一、pytest特点 1.入门简单,文档丰富 2.支持部分单元测试,和复杂的功能测试 3.支持参数化 4.执行测试用例过程中支持跳过操作 5.pytest支持重复执行失败的case,unittest不支持 6.支持运行由nose、unittest编写的测试用例 7.支持很多第三方插件 8.方便与持续集成工具集成,方便测试报告查看 二、pytest的安装,安装前关掉代理软件 1.在线安装 pip install pytest ...

2021-08-10 17:36:30 351

原创 软件测试报告

目录 一、 概述.. 3 1. 项目背景.. 3 2. 测试目标.. 3 3. 测试对象.. 3 4. 测试范围.. 3 5. 测试方法.. 4 6. 测试结束准则.. 4 二、 测试过程.. 5 1. 测试用例.. 5 2. 测试过程.. 6 3. 测试时间.. 6 三、 测试结论.. 7 1. Bug概述.. 7 2. 遗留bug. 8 ...

2021-08-10 09:07:19 7416

原创 软件测试计划

XXX项目测试计划 目录 一、 引言.. 3 1. 项目概述.. 3 2. 参考资料.. 3 二、 测试内容.. 3 1. 测试对象.. 3 2. 测试目的.. 4 3. 测试范围.. 4 三、 测试策略.. 5 1. 测试方法.. 5 2. 测试过程.. 6 3. 严重等级划分标准.. 6 4. 测试用例优先级定义.. 7 ...

2021-08-10 08:56:17 721

原创 selenium(十)获取随机手机号码

注册页面重复执行 1.定义随机手机号码函数 2.备份数据库,每次执行完代码后恢复数据库 3.通过修改数据库数据来清除数据 import random import time from selenium import webdriver driver = webdriver.Chrome() driver.maximize_window() driver.implicitly_wait(10) # 访问网站并打开多个窗口 driver.get("https://passport.baidu.co.

2021-07-31 11:27:50 489

原创 selenium(九)cookie的处理

cookie的工作流程 1.http请求从客户端访问服务端请求时,服务器会验证客户端的用户信息 2.web 服务器认证用户信息通过后会生成cookie,并返回给客户端,客户端收到cookie后会保存cookie到浏览器中 3.客户端再次请求http时会带上保存的cookie,一起发送给服务器 4.服务器收到请求后根据cookie判断用户状态,并返回相应信息给客户端 cookie是由服务器生成的,保存在用户浏览器上的文本文件,其中包含用户相关信息 cookie数据格式:键值对组成(python.

2021-07-31 10:17:23 550

原创 selenium(八)窗口切换及截图

1.多窗口切换 selenium中封装了获取当前窗口句柄,获取所有窗口句柄和切换到指定句柄窗口的方法: 句柄:handle 是操作系统随机生成的随机字符串 方法: driver.current_window_handle 获取当前窗口句柄 driver.window_handles 获取所有窗口句柄,该方法的返回值类型为列表形式 driver.switch_to.window(handle) 切换指定句柄窗口 import tim.

2021-07-30 10:09:24 505

原创 selenium(七)webdriver下拉框、弹出框和滚动条操作

1.下拉框选择 导入Select类 实例化select对象 select = Select(element) element必须为<select>标签对应的元素 代码实现 select_by_index(index)------------根据option索引定位,从0开始 select_by_value(value)------------根据option属性的值来定位 select_by_visible_tex.

2021-07-28 14:36:42 1442

原创 selenium(六)元素等待的3种方式

元素等待,等待元素加载,共3种方式 1.隐式等待 要等待整个页面加载完成,再进行元素定位,若找到元素会返回元素,若在指定时间内未找到元素,则每隔0.5s再次查找,如果最终没有找到元素,则抛出异常NoSuchElementException 方法: driver.implicitly_wait(timeout) timeout为等待最大时长,单位是秒 隐式等待只需要设置一次,会对所有元素生效 import time from selenium import webdriver fr.

2021-07-22 15:43:26 1946

原创 selenium(五)键盘输入操作

模拟键盘操作 导入包:from selenium.webdriver.common.keys import Keys 常用的键盘操作: 1.send_keys(Keys.BACK_SPACE)------删除键 2.send_keys(Keys.SPACE)--------空格键 3.send_keys(Keys.TAB)------tab键 4.send_keys(Keys.ESCAPE)-------回退esc键 5.send_keys(Keys.ENTER)--------回车键 6.se.

2021-07-21 18:02:12 7340

原创 selenium(四)鼠标操作

selenium 提供的鼠标操作的方法 首先导入相关包: from selenium.webdriver import ActionChains 需要先实例化鼠标对象: action = ActionChains(driver) 操作方法: 1.context_click(element)------右键 2.double_click(element)-------双击 3.drag_and_drop(source,target)-------鼠标拖动source,target都是元素 4.m.

2021-07-21 15:53:29 597

原创 selenium(三)获取元素信息的方法

获取元素信息的目的是用来做断言,判断自动化用例的最终执行结果 1.size 返回元素大小 2.text 返回元素文本 3.get_attribute("") 获取元素属性值,参数为元素的属性名 4.is_displayed() 判断元素是否显示 5.is_enabled() 判断元素是否可用 6.is_selected() 判断元素是否被选中 import time from selenium import webdriver """ 获取网站第一个超链...

2021-07-20 16:30:31 750

原创 selenium(二)元素及浏览器操作

1.点击操作 click() 2.输入 send_keys() 3.清除操作 clear() 4.浏览器窗口最大化 maximize_window() 5.设置浏览器窗口大小 set_window_size(a,b) 6.设置浏览器位置 set_window_position(a,b) 7.浏览器后退 back() 8.浏览器前进 forward() 9.浏览器刷新 refresh() 10.关闭当前窗口 close() 11.关闭浏览器 quit() 12.获取页面标题 title.

2021-07-17 18:21:19 262

原创 selenium(一)8种元素定位方式

1.id定位 通过元素的id属性进行元素定位,在html标准规范中,id值是唯一的 定位方法:find_element_by_id(属性值) 2.name定位 通过name属性来定位元素,name是允许重复的 定位方法:find_element_by_name(属性值) 3.class_name定位 通过class属性来定位元素,class是允许重复的 定位方法:find_element_by_class_name(属性值),属性值若有多个单词,如:“password input”,只需要取其中一个就.

2021-07-17 10:21:02 6172 1

原创 python包、模块

1.模块:一般模块命名规则同变量规则,使用小写字母+下划线命名 """ 导入模块 import 模块名 使用导入模块中的函数 模块名.函数名 """ import mytest print(mytest.my_sum(2,4)) """ 导入模块时区别名 导入模块 import 模块名 as 别名 使用导入模块中的函数 别名.函数名 """ import mytest as mt print(mt.my_sum(2,4)) """ 导入指定内容 导入模块 from 模块名 import 函数名 使用导入

2021-07-14 16:15:23 401

原创 python捕获异常

""" try: 可能出现异常的语句 except 异常类型1: 出现异常后会自动执行的代码 except 异常类型2: 出现异常后会自动执行的代码 except: 出现未知异常后会自动执行的代码 """ # 计算器案例练习 try: a = int(input("请输入数字1:")) b = int(input("请输入数字2:")) op1 = input("请输入运算符号:") if op1 =="+": print(a.

2021-07-09 14:43:24 187

原创 python-unittest测试报告

""" 两种方法可以生成测试报告 1.TextTestRunner(unittest自带) 2.HTMLTestRunner(第三方模板) """ # 创建一个名为mytest01.py的测试用例文件内容如下 from parameterized import parameterized import unittest # 定义方法 def my_sum(a,b): return a + b # 定义类,并继承父类unittest.TestCase class my_test1(unittes.

2021-07-08 14:58:35 955 1

原创 unittest参数化parameterized

# pip install parameterized安装依赖包 # 若报错“Value for scheme.headers does not match",重装pip # 若报错“check_hostname requires server_hostname”,关掉本地所有代理和fiddler等代理软件重新执行即可 """ 使用步骤 1.导入包 from parameterized import parameterized 2.在方法上面使用 @parameterized.expand修饰方法,参数是.

2021-07-07 10:55:14 1540

原创 unittest断言

# 断言:判断测试用例执行结果是否符合预期 """ assertEqual(参数1,参数2) 如果参数1与参数2的值相等,则断言成功测试用例通过,若不相等则断言失败,测试不通过 一般情况下参数1为实际结果,参数2为预期结果 """ import unittest # 定义方法 def my_sum(a,b): return a + b # 定义类,并继承父类unittest.TestCase class my_test(unittest.TestCase): # 编写第一个测试用例,测试用.

2021-07-05 15:05:47 319

原创 unittest测试框架基础用法

""" UnitTest是python自带的单元测试框架 TestCase测试用例 TestSuite测试套件,可以把多个TestCase集成到一个TestSuite中 TestRunner执行测试用例 TestLoader自动从代码中加载多个测试用例TestCase Fixure是UnitTest的特性 """ # ************************************************************************ # testCase # 案例:定义一个.

2021-07-03 10:12:09 508 1

原创 python文件操作

# 打开文件并只读文件 file = open(r"D:\file\test.txt","r") # 第一个r代表方式转义,第二个r代表只读操作,只读文件必须存在 # 读取文件 txt = file.read() print(txt) # 关闭文件,若不关闭文件则会消耗内存 file.close() # * *************************************************************** # 打开文件并写入内容 # 若文件不存在则新建文件,若文件存在则覆盖文.

2021-06-29 18:21:24 201

原创 sql语句学习

按id倒序查询前5条数据 select top 5 * from table order by id desc 查询前百分之50 select top 50 percent * from table 查询符合多个条件 select * from table where country = 'usa' or country = 'cn' 插入行、列 insert into table values(value1,value2) insert into table(id,name,n

2021-06-25 15:33:32 200

原创 python类的多态

#多态,不同的对象调用相同的父类方法,产生不同的结果 class animal: #定义父类 def food(self): pass def eat(self): self.food() class cat(animal): #定义子类 def food(self): print('吃火腿') class cow(animal): #定义子类 def food(self): print('吃青草') c = .

2021-06-25 15:24:09 183

原创 python类方法和类属性

# 类属性,定义在类里面,方法的外面,不需要实例化类就可以直接使用 # 调用的时候使用 类.属性名 class dog: name = '哈士奇:汪!' #类属性定义,不需要self关键字,类似于定义变量 def __init__(self): pass print(dog.name) #调用类属性,不需要实例化可以直接调用 dog.name = '秋田:汪!' #类属性赋值 print(dog.name) # *****************************.

2021-06-25 15:19:43 420

原创 python类的继承

# 类b继承类a后,类b会拥有类a的所有属性和方法 # 一个父类可以有多个不同的子类 class a: #定义父类a def __init__(self,a1 = 23): #定义父类属性 self.a1 = a1 def a2(self): #定义父类方法 print(self.a1) class b(a): #定义子类b继承类a,子类(父类) def b1(self): print(self.a1) #调用类a的属性 de.

2021-06-23 15:42:37 401

原创 python类的封装

# 封装-把属性和方法封装到一个抽象类中 # '__'私有属性或方法,只能用在类的内部使用,无法在类的外部访问 class person: def __init__(self): self.name = 'marry' #定义属性name self.__weight = 150 #定义私有属性weight def eat(self): #定义方法 print('eating') def sleep(self): pri.

2021-06-22 16:34:24 449

原创 python面向对象二

# __del__方法,当对象在内存中销毁的时候自动调用,且不允许有别的参数,只能有self # 若无该方法,对象也会销毁,不过同时没有代码被执行 # 定义__del__方法 class 类: def __del__(self): pass # ********************************************** class cat: def __init__(self,name = 'tom'): self.name = nam.

2021-06-22 14:39:04 123

原创 python面向对象一

# 类是一个模板,不可直接使用,如建筑设计图纸 # 方法是类的行为,属性是类的特性 # 对象是根据类实例化出来的 # 一个类可能有多个对象,每个对象的属性的值可能不同,如人的属性有身高、体重、肤色等,方法有说话、跑步、吃饭 # 类:名称、属性(变量)、方法(函数) # 定义类 class 类名: def 方法名(self,参数1,参数2): pass class cat: def eat(self): print('小猫咪吃饭') def drin.

2021-06-19 10:20:34 267 1

原创 python基础案例练习二

# 一个学校有3个办公室,现在有8位老师,请给老师们随机分配工位 # 定义学校和办公室 school = [[],[],[]] # 定义老师列表 teacher_list = [] index = 1 while index <= 8: # 创建老师的名字 teacher_name = '老师' + str(index) # 将老师名称放入老师列表中 teacher_list.append(teacher_name) index = index + 1 ..

2021-06-15 17:21:46 276

原创 python基础案例练习一

""" 员工管理系统联系 1.显示系统菜单 2.获得用户输入的菜单 3.根据用户的输入判断执行操作 """ # 存储员工信息 employee = {} def show_menu(): print('*'*20 + '员工管理系统菜单' + '*'*20) print('1.添加员工信息') print('2.删除员工信息') print('3.修改员工信息') print('4.查看员工信息') print('5.退出') # 添加员工信息 def.

2021-06-15 17:17:42 528

原创 python元组与字典

# 元组是不能修改的序列容器 # 元组比列表更节省空间,因为元组不可修改 my_tuple = () #定义元组 my_tuple = (10,20,30) print(my_tuple[1]) #元组下标索引 print(my_tuple[1:]) #元组切片 # 只有一个元素的元组需要在末尾添加逗号 my_tuple = (10,) # 元组嵌套 my_tuple = ((1,2),(10,20)) my_tuple = ((10,),) # 元组中的元素不可修改 my_num = (1,2,3) #.

2021-06-15 11:21:42 165

原创 python变量及字符类型

# input_content = input('请输入您的姓名:') # 格式输出 # print('欢迎光临: %s' % input_content) # ******************************************************** # 数据类型转换 left_num = input('请输入第一个数字') right_num = input('请输入第二个数字') # 打印字符类型 print(type(left_num),type(right_num)).

2021-06-15 10:55:48 223

原创 python中if、while分支语句

a = 10 b = 20 if a > b: ret = a + b else: ret = a - b print('ret = %d' % ret) input_username = input('请输入用户名:') input_password = input('请输入密码:') correct_name = 'admin' correct_password = '123456' # 判断用户名和密码是否正确 if input_username == correct_na.

2021-06-15 10:52:16 378 2

原创 python容器

# 遍历容器中的字符 my_str = 'hello' i = 0 while i < 5: #用下标的方式取字符,计数方式从左到右从0开始,从右到左从-1开始 print(my_str[i], end='') i = i + 1 print() #换行 # 简洁写法,for循环 for v in my_str: print(v,end='') # ************************************************* # 容器的专属方法(.

2021-06-15 10:50:37 122

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除