自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(99)
  • 收藏
  • 关注

原创 【测试开发】函数进阶-纯函数

纯函数是指返回值仅依赖于输入参数且无副作用的函数。其核心原则包括:只使用函数参数作为输入、不改变外部状态、相同输入必有相同输出。与之相对的副作用是指函数对外部环境造成的改变(如修改全局变量)。示例中func1(a,b)是纯函数,仅返回参数之和;而func2(a)是非纯函数,因其依赖外部变量var1。纯函数因其可预测性在编程中被广泛推崇。

2025-06-12 15:51:51 28

原创 【测试开发】函数进阶-递归函数

在函数中调用函数自身,把这样的函数叫做递归函数递归边界为退出递归的终止条件。

2025-06-12 13:53:37 280

原创 【测试开发】数据类型篇-迭代器和生成器

本文介绍了Python中迭代器与生成器的核心概念及区别。迭代器分为两种协议:迭代协议(实现__iter__或__getitem__方法)和迭代器协议(实现__iter__和__next__方法)。可迭代对象包括列表、字符串等,可通过for循环遍历。生成器是一种特殊的迭代器,采用延迟计算方式节省内存,包含生成器表达式和yield函数两种创建方式。相比普通迭代器,生成器多了send()、close()和throw()三种特殊方法。二者关系为:生成器⊂迭代器⊂可迭代对象。文章通过代码示例演示了iter()/nex

2025-06-12 13:25:50 67

原创 【测试开发】数据类型篇-列表推导式和字典推导式

本文介绍了Python列表和字典推导式的语法转换。列表推导式格式为[expression for item in iterable],将示例中for循环生成"page1"到"page10"的代码简化为1行。字典推导式语法为{key:value for item in iterable},展示了用推导式生成数字键值对的示例。两种推导式都能简化代码,提高可读性,其中iterable可以是列表、元组等序列,表达式部分支持格式化等操作。(约100字)

2025-06-12 12:47:47 75

原创 【测试开发】数据类型篇-元组、列表、字典、集合

本文对比了Python中主要数据结构的特点与性能差异。在内存占用方面,元组优于列表,字典耗内存最多但查询最快。元组适用于固定数据结构场景,列表适合需要动态修改的数据。命名元组namedtuple提供了更直观的访问方式。集合可用于快速去重,字典在Python3.7后变为有序。性能排序上,集合查找最快,字典次之,元组和列表较慢;内存消耗方面,字典最多,集合、列表次之,元组最省。开发者应根据数据可变性和性能需求选择合适的数据结构。

2025-06-12 10:47:22 68

原创 【测试开发】虚拟环境,virtualenv和pipenv的安装和应用

1、readme:对项目的整体介绍,也是一份使用手册,需维护更新,通常为README.rst/README.md2、LICENSE:该项目的许可说明和授权3、setup.py:通过setup把可信代码打包发布4、sample:存放项目的核心代码5、requirements.txt:存放该项目所有依赖的第三方库6、docs:包的参考文档7、tests:所有的代码测试都归存于该目录下8、makefile:用于项目的命令管理。

2025-06-12 10:26:11 368

原创 软件测试面试题 | 提BUG相关

测试提bug相关注意事项

2022-05-06 17:45:42 2488

原创 HttpRunner - 乱码处理

由于httprunner是采用requests去请求的,所有requests遇到的问题它也会遇到一、请求参数乱码1、json中包含中文传参的转码问题使用debugtalk.py转码后再引用(有报错)2、修改源码二、响应正文乱码百度首页请求举例1、将预期值的编码转成接口返回的一致...

2022-05-06 13:43:46 662

原创 HttpRunner-实现参数化的五大方法

1、在YAML/JSON中直接指定参数列表2、调用debugtalk.py中自定义的函数生成参数列表3、通过内置的函数引用CSV文件4、pymysql库实现参数化5、参数化实现及用例重复执行

2022-05-06 13:39:55 1886 1

原创 Python +PyQt5 生成exe小工具教程(生成简易计算器举例,通俗易懂,一看就会)

1、pyqt5+qtdesigner安装和环境配置2、创建UI文件3、将UI文件与函数关联4、生成小工具

2022-04-28 15:26:33 3931 6

原创 Python 报错Process finished with exit code -1073740791 (0xC0000409)解决方法

1、打开Run-Edit Configurations2、选中Emulate terminal in putput console3、重新运行py文件即可

2022-04-27 14:37:20 4219 3

原创 Python 实现自动打开电脑程序进行操作

1、安装pyautogui2、识别鼠标坐标3、报错解决

2022-04-25 14:31:04 13011 9

原创 HttpRunner- 测试用例分层一(接口定义、测试用例、测试套件)

1、测试用例分层定义2、API、testcases、testsuites分层设计举例

2022-04-10 22:26:41 1244 4

原创 HttpRunner- skip语法

百度搜索举例1、skip :无条件跳过- config: name: 验证百度搜索 base_url: https://www.baidu.com- test: #skip 无条件跳过 name: 步骤一:执行百度搜索请求 skip: 无条件跳过 request: url: /s method: GET headers: User-Agent: Mozilla/5.0 (Linux; Android 6

2022-04-10 18:28:29 885

原创 HttpRunner- hook机制

1、 hook机制 相当于unittest中的setup teardown函数2、关键字是setup_hooks 和teardown_hooks3、一般在debugtalk.py中编写相应的初始化及环境清理函数,在测试用例文件中的config及test中根据需要加入setup_hooks 和teardown_hooks①yaml文件内容:- config: name: 验证百度搜索 base_url: https://www.baidu.com setup_hook

2022-04-10 18:23:54 836

原创 HttpRunner- debugtalk.py详解

一、作用1、在内部可以编写辅助函数,然后在yml文件中使用 ${函数名()}2、Debugtalk.py用来确定项目根路径,有Debugtalk.py文件的目录为根目录二、举例:百度搜索“我是丸子吖”①debugtalk.py函数示例②引用的yaml文件- config: name: 验证百度搜索 base_url: https://www.baidu.com- test: name: 执行百度搜索请求 request: url:

2022-04-10 18:16:35 3929

原创 HttpRunner- 环境变量设置.env文件

打开百度举例一、env文件设置1、位置:项目根目录下,新建.env文件,内容格式: 变量名=变量值2、引用方法:在测试用例的yml中,使用 ${ENV(变量名)}二、引用示例- config: name: 测试用例-->验证能否打开百度 base_url: ${ENV(HOSTS)}- test: name: 执行主页请求 request: url: / method: GET extract: -

2022-04-10 18:08:44 1121

原创 HttpRunner- 断言语法

- config: name: 验证能否打开官网 base_url: http://www.hnxmxit.com- test: name: 执行主页请求 request: url: / method: GET extract: - code: status_code - info: reason validate: - is: [$code,200] - {"check":$in.

2022-04-10 17:58:52 773

原创 Jmeter循环获取JDBC查询结果及断言数据库查询结果

1、Jmeter连接数据库操作步骤2、通过ForEach控制器实现循环获取数据库查询结果3、将数据库查询结果作为接口返回数据断言的对象

2022-04-08 13:52:54 7045

原创 Jinja2安装报错解决方案- ImportError: cannot import name ‘soft_unicode‘ from ‘markupsafe‘

Jinja2安装报错解决方案

2022-04-06 13:30:41 1847

原创 实战问题总结 | Python比对接口返回数据和数据库所存数据是否一致

1、获取接口指定字段的返回参数2、获取数据库内容3、下划线转驼峰4、字典value数据类型转换5、字典key排序6、字典元素比较

2022-04-06 13:27:22 3940

原创 Request模块(八)-- re模块及及正则表达式

1、re.match2、re.search3、re.findall4、re.finditer5、re.split6、re.sub7、正则表达式分组() 匹配括号内的表达式8、常用的正则表达式模板:(.+?) 、[\s\S]

2022-03-14 23:00:22 851

原创 Request模块(七)-- 异常处理

1、python自带的异常都存在内置的命名空间中,所以使用时不需要导入2、异常类父类Exception - RequestException - ConnectTimeoutimport requestsfrom requests.exceptions import ConnectTimeout #自定义异常from requests.exceptions import RequestExceptiontry: response = requests.get(url="http:/

2022-03-14 22:47:32 2148

原创 Request模块(六)-- 重定向相关

举例:京东网站的历史地址https://www.360buy.com1、自动重定向,直接填写url地址即可import requestsresponse = requests.get(url="https://www.360buy.com") #自动重定向print(response.url)2、关闭重定向语法:allow_redirects=Falseimport requestsresponse = requests.get(url="https://www.360buy

2022-03-14 22:41:28 1268

原创 Request模块(五) -- 代理设置

测试场景:出于公司对服务器的安全管理1、普通代理设置import requestsproxies = { "http":"http://127.0.0.1:8888", "https":"https://127.0.0.1:8888"}response = requests.get(url="http:XXX", proxies=proxies)print(response.text)2、加密代理设置proxies

2022-03-13 23:53:28 2162

原创 Requests模块(四)-- 获取响应正文的多种方式

1、print(response_obj.text)2、content 二进制形式返回响应正文3、响应正文为json数据,可直接返回json对象4、raw 响应正文以原始数据展示,需要在请求中增加参数stream=True

2022-03-13 23:40:25 1860

原创 Requests模块(三)-- JSON格式与字符串转换语法

一、JSON格式介绍json数据是开发常用的一种数据报文交换格式,常用于接口返回前端、接口之间传递信息等,两种格式1、键值对:{"name":"丸子"} 2、数组格式:[{"name":"丸子"},{"name":"金子"}]二、如何判断数据是否为json格式1、键值对格式和数组格式可以嵌套使用 2、python,json数据相当于字典、列表(字符串一定要用双引号)三、举例说明举例一:把json对象转换成字符串 json.dumps() 转化过程自动把中文字符编码成Unico

2022-03-13 23:31:09 1892

原创 Request模块(二) -- 获取响应信息及响应正文的编码处理

1、获取响应信息语法2、模拟请求头3、响应正文编码处理

2022-03-13 23:16:45 2413

原创 Appium+python OPPO手机避坑指南

报错一:SecurityExceptionjava.lang.SecurityException: uid 2000 does not have android.permission.WRITE_SECURE_SETTINGS解决方案:设置-其他设置-开发者选项-开启“OEM解锁”+开启“USB调试”+开启“禁止权限监控”报错二:启动APP时一直提示waiting for debugger解决方案:设置-其他设置-开发者选项-关闭“等待调试程序”...

2022-02-18 10:10:01 2920 1

原创 Git讲解(四)-- 标签管理

1、git tag语法详解2、head指针游离解决方案

2022-01-18 14:02:10 338

原创 Git讲解(六)-- 远程仓库-克隆+fork操作

1、概述fork2、克隆他人项目至自己仓库3、将克隆的代码改动后申请同步至原仓库4、删除fork的项目

2022-01-18 13:49:26 4623

原创 Git讲解(三)-- 代码分支创建及合并

1、创建分支命令及方法2、合并分支命令及方法3、解决冲突方法

2022-01-16 13:28:25 1210

原创 Git讲解(二)-- 基本操作命令及报错解决方案

git add *报错解决方法:修改文件名称:mv test_03.py test3.pygit mv == mv + git add -A撤销修改文件名操作已经git mv 还没有git commit之前撤销修改最后一次提交操作:注释写错或少提交了部分文件,此时需要修正这次提交的内容,把这样的操作成为修改最后一次提交操作git commit -amend -m " "...

2022-01-16 13:22:49 602

原创 Pytest+setup/teardwon使用场景及作用范围

setUp tearDown:执行前准备,执行后清理;公共用例;难点:代码维护、数据维护、公共模块复用pytest的setUp_function只对函数用例生效 不对类中的函数生效setUp_class对类生效setup_method,针对类带test的方法每个方法执行之前执行 不用关注调用方法,只和case数量有关setup_module...

2022-01-14 13:57:33 7503

原创 Git讲解(一)-- 简介、安装及使用教程

1、Git下载与安装2、Git使用方法和常用命令

2022-01-14 13:20:31 846

原创 Pytest.main()函数 - 执行测试时参数含义详解

1、-v 用于显示每个测试函数的执行结果2、-q 只显示整体测试结果3、-s 用于显示测试函数中的print()函数输出4、-x 在第一个错误或测试失败时立即退出5、--maxfail=2 自定义运行多少次失败后停止

2022-01-12 23:47:13 9745

原创 Pytest.main()函数之mark标签使用方法举例

1、创建.ini配置文件,定义标签[pytest]# 固定的section名markers= # 固定的option名称 smoking systems2、创建用例,分别标记,举例如下:3、创建执行所有用例的.py文件,如test_run_all.py(-v 展示用例详细信息 -m仅执行指定标签的用例)import pytestif __name__ == '__main__': pytest.main(['-v','-m smoke']) #.

2022-01-12 16:35:08 6080

原创 Appium实战各种报错及解决方案

Encountered internal error running command: UnknownError: An unknown server-side error occurred while processing the command. Original error: Could not proxy command to the remote server. Original error: socket hang up运行命令时遇到内部错误:UnknownError:在处理命令时发生了未知

2022-01-10 17:25:31 5863 5

原创 禅道登录举例:Python+Selenium+PageObject模式详解 (一)

禅道举例,PageObject框架优化过程1、封装公共类BasePage2、封装ElementdataUtils,读取Excel中的元素属性3、封装LogUtils,打印日志4、各模块之间的调用详解及登录场景举例

2022-01-10 17:19:17 3203

原创 Python读取.ini配置文件语法

1、读取配置文件数据的语法2、将常用获取配置文件方法封装成工具类

2021-12-30 13:30:11 1081

空空如也

空空如也

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

TA关注的人

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