- 博客(92)
- 收藏
- 关注
原创 HttpRunner - 乱码处理
由于httprunner是采用requests去请求的,所有requests遇到的问题它也会遇到一、请求参数乱码1、json中包含中文传参的转码问题使用debugtalk.py转码后再引用(有报错)2、修改源码二、响应正文乱码百度首页请求举例1、将预期值的编码转成接口返回的一致...
2022-05-06 13:43:46
657
原创 HttpRunner-实现参数化的五大方法
1、在YAML/JSON中直接指定参数列表2、调用debugtalk.py中自定义的函数生成参数列表3、通过内置的函数引用CSV文件4、pymysql库实现参数化5、参数化实现及用例重复执行
2022-05-06 13:39:55
1880
1
原创 Python 报错Process finished with exit code -1073740791 (0xC0000409)解决方法
1、打开Run-Edit Configurations2、选中Emulate terminal in putput console3、重新运行py文件即可
2022-04-27 14:37:20
4188
3
原创 HttpRunner- 测试用例分层一(接口定义、测试用例、测试套件)
1、测试用例分层定义2、API、testcases、testsuites分层设计举例
2022-04-10 22:26:41
1236
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
881
原创 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
832
原创 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
3922
原创 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
1114
原创 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
769
原创 Jmeter循环获取JDBC查询结果及断言数据库查询结果
1、Jmeter连接数据库操作步骤2、通过ForEach控制器实现循环获取数据库查询结果3、将数据库查询结果作为接口返回数据断言的对象
2022-04-08 13:52:54
7038
原创 Jinja2安装报错解决方案- ImportError: cannot import name ‘soft_unicode‘ from ‘markupsafe‘
Jinja2安装报错解决方案
2022-04-06 13:30:41
1833
原创 实战问题总结 | Python比对接口返回数据和数据库所存数据是否一致
1、获取接口指定字段的返回参数2、获取数据库内容3、下划线转驼峰4、字典value数据类型转换5、字典key排序6、字典元素比较
2022-04-06 13:27:22
3934
原创 Request模块(八)-- re模块及及正则表达式
1、re.match2、re.search3、re.findall4、re.finditer5、re.split6、re.sub7、正则表达式分组() 匹配括号内的表达式8、常用的正则表达式模板:(.+?) 、[\s\S]
2022-03-14 23:00:22
843
原创 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
2126
原创 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
1264
原创 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
2159
原创 Requests模块(四)-- 获取响应正文的多种方式
1、print(response_obj.text)2、content 二进制形式返回响应正文3、响应正文为json数据,可直接返回json对象4、raw 响应正文以原始数据展示,需要在请求中增加参数stream=True
2022-03-13 23:40:25
1853
原创 Requests模块(三)-- JSON格式与字符串转换语法
一、JSON格式介绍json数据是开发常用的一种数据报文交换格式,常用于接口返回前端、接口之间传递信息等,两种格式1、键值对:{"name":"丸子"} 2、数组格式:[{"name":"丸子"},{"name":"金子"}]二、如何判断数据是否为json格式1、键值对格式和数组格式可以嵌套使用 2、python,json数据相当于字典、列表(字符串一定要用双引号)三、举例说明举例一:把json对象转换成字符串 json.dumps() 转化过程自动把中文字符编码成Unico
2022-03-13 23:31:09
1889
原创 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
2898
1
原创 Git讲解(六)-- 远程仓库-克隆+fork操作
1、概述fork2、克隆他人项目至自己仓库3、将克隆的代码改动后申请同步至原仓库4、删除fork的项目
2022-01-18 13:49:26
4609
原创 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
600
原创 Pytest+setup/teardwon使用场景及作用范围
setUp tearDown:执行前准备,执行后清理;公共用例;难点:代码维护、数据维护、公共模块复用pytest的setUp_function只对函数用例生效 不对类中的函数生效setUp_class对类生效setup_method,针对类带test的方法每个方法执行之前执行 不用关注调用方法,只和case数量有关setup_module...
2022-01-14 13:57:33
7498
原创 Pytest.main()函数 - 执行测试时参数含义详解
1、-v 用于显示每个测试函数的执行结果2、-q 只显示整体测试结果3、-s 用于显示测试函数中的print()函数输出4、-x 在第一个错误或测试失败时立即退出5、--maxfail=2 自定义运行多少次失败后停止
2022-01-12 23:47:13
9740
原创 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
6074
原创 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
5826
5
原创 禅道登录举例:Python+Selenium+PageObject模式详解 (一)
禅道举例,PageObject框架优化过程1、封装公共类BasePage2、封装ElementdataUtils,读取Excel中的元素属性3、封装LogUtils,打印日志4、各模块之间的调用详解及登录场景举例
2022-01-10 17:19:17
3198
原创 Pycharm的.log文件带问号标识无法打开解决方案
生成的文件有问号标识无法打开时,多数情况均为文件编码格式问题,pycharm默认为GBK格式,需要转为UTF-8
2021-12-17 14:54:12
3376
1
原创 ADB+Python+Appium连接真机操作步骤说明及报错解决方案
1、adb+Python+appium连接真机操作2、由于目标计算机积极拒绝,无法连接。(10061)解决方案3、error: more than one device/emulator解决方案4、Could not find 'apksinger.jar' in XX路径解决方案5、Original error: The JAVA_HOME environment解决方案6、Original error: Activity name '.main.MainActivity'解决方案
2021-12-14 19:09:45
7443
8
原创 Python自定义路径格式:OSError: [Errno 22] Invalid argument报错解决方案
将时间指定格式化后,文件名不支持":",与Windows文件命名规范需保持一致
2021-12-14 13:16:15
2453
原创 Python+Selenium+Unittest+HTMLTestRunner线性自动化框架实战详细教程
大部分公司项目管理工具都为禅道,此篇以禅道登录进行举例一、创建包和目录1、common:存放公共方法,如测试执行前的操作(打开浏览器)、测试执行后的操作(关闭浏览器)、登录等2、config:一般用于存放ini配置文件3、report:用于存放HTML测试报告4、test_cases:测试用例目录5、run_all.py:用于执行所有测试用例的文件二、各目录的编写方法1、首先编写单独的测试用例,确定单独模块可执行成功import unittestimport t.
2021-12-13 22:02:38
2263
1
原创 Python+Unittest - discover()构建不同目录下的用例
1、执行指定路径的所有用例unittest.defaultTestLoader.discover()方法2、执行指定类的指定用例unittest.TestLoader()方法
2021-12-09 18:36:29
2568
1
原创 Python+Selenium UI自动化 - Unittest+HTMLTestRunner生成测试报告以及忽略用例
1、HTMLTestRunner2、unittest.main(verbosity= N)用法3、verbosity+TextTestRunner将测试结果写入文本文件,控制台仅打印输出语句
2021-12-09 13:19:51
1215
原创 Python+Selenium UI自动化 - Unittest构建测试套件
一、执行所有用例:1、直接unittest.main()2、套件名称 = unittest.TestLoader().loadTestsFromTestCase(类名)3、套件名称 =unittest.TestLoader().loadTestsFromModule(模块名称)二、执行指定模块的指定类中的一条或多条用例1、套件名称.addTest(类名.方法名)2、套件名称 = unittest.TestLoader().loadTestsFromName('模块名.类名.方法名')
2021-12-08 18:39:53
338
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人