Python
我是丸子丫
菜鸡测试工程师
展开
-
HttpRunner - 乱码处理
由于httprunner是采用requests去请求的,所有requests遇到的问题它也会遇到一、请求参数乱码1、json中包含中文传参的转码问题使用debugtalk.py转码后再引用(有报错)2、修改源码二、响应正文乱码百度首页请求举例1、将预期值的编码转成接口返回的一致...原创 2022-05-06 13:43:46 · 608 阅读 · 0 评论 -
HttpRunner-实现参数化的五大方法
1、在YAML/JSON中直接指定参数列表2、调用debugtalk.py中自定义的函数生成参数列表3、通过内置的函数引用CSV文件4、pymysql库实现参数化5、参数化实现及用例重复执行原创 2022-05-06 13:39:55 · 1779 阅读 · 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 · 3932 阅读 · 0 评论 -
Python 实现自动打开电脑程序进行操作
1、安装pyautogui2、识别鼠标坐标3、报错解决原创 2022-04-25 14:31:04 · 11737 阅读 · 9 评论 -
HttpRunner- 测试用例分层一(接口定义、测试用例、测试套件)
1、测试用例分层定义2、API、testcases、testsuites分层设计举例原创 2022-04-10 22:26:41 · 1156 阅读 · 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 · 813 阅读 · 0 评论 -
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 · 797 阅读 · 0 评论 -
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 · 3873 阅读 · 0 评论 -
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 · 1064 阅读 · 0 评论 -
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 · 724 阅读 · 0 评论 -
Jinja2安装报错解决方案- ImportError: cannot import name ‘soft_unicode‘ from ‘markupsafe‘
Jinja2安装报错解决方案原创 2022-04-06 13:30:41 · 1705 阅读 · 0 评论 -
实战问题总结 | Python比对接口返回数据和数据库所存数据是否一致
1、获取接口指定字段的返回参数2、获取数据库内容3、下划线转驼峰4、字典value数据类型转换5、字典key排序6、字典元素比较原创 2022-04-06 13:27:22 · 3800 阅读 · 0 评论 -
Request模块(八)-- re模块及及正则表达式
1、re.match2、re.search3、re.findall4、re.finditer5、re.split6、re.sub7、正则表达式分组() 匹配括号内的表达式8、常用的正则表达式模板:(.+?) 、[\s\S]原创 2022-03-14 23:00:22 · 790 阅读 · 0 评论 -
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 · 1974 阅读 · 0 评论 -
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 · 1226 阅读 · 0 评论 -
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 · 2111 阅读 · 0 评论 -
Requests模块(四)-- 获取响应正文的多种方式
1、print(response_obj.text)2、content 二进制形式返回响应正文3、响应正文为json数据,可直接返回json对象4、raw 响应正文以原始数据展示,需要在请求中增加参数stream=True原创 2022-03-13 23:40:25 · 1778 阅读 · 0 评论 -
Requests模块(三)-- JSON格式与字符串转换语法
一、JSON格式介绍json数据是开发常用的一种数据报文交换格式,常用于接口返回前端、接口之间传递信息等,两种格式1、键值对:{"name":"丸子"} 2、数组格式:[{"name":"丸子"},{"name":"金子"}]二、如何判断数据是否为json格式1、键值对格式和数组格式可以嵌套使用 2、python,json数据相当于字典、列表(字符串一定要用双引号)三、举例说明举例一:把json对象转换成字符串 json.dumps() 转化过程自动把中文字符编码成Unico原创 2022-03-13 23:31:09 · 1844 阅读 · 0 评论 -
Request模块(二) -- 获取响应信息及响应正文的编码处理
1、获取响应信息语法2、模拟请求头3、响应正文编码处理原创 2022-03-13 23:16:45 · 2356 阅读 · 0 评论 -
Pytest.main()函数 - 执行测试时参数含义详解
1、-v 用于显示每个测试函数的执行结果2、-q 只显示整体测试结果3、-s 用于显示测试函数中的print()函数输出4、-x 在第一个错误或测试失败时立即退出5、--maxfail=2 自定义运行多少次失败后停止原创 2022-01-12 23:47:13 · 9663 阅读 · 0 评论 -
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 · 5999 阅读 · 0 评论 -
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 · 5457 阅读 · 5 评论 -
禅道登录举例:Python+Selenium+PageObject模式详解 (一)
禅道举例,PageObject框架优化过程1、封装公共类BasePage2、封装ElementdataUtils,读取Excel中的元素属性3、封装LogUtils,打印日志4、各模块之间的调用详解及登录场景举例原创 2022-01-10 17:19:17 · 3097 阅读 · 0 评论 -
Python读取.ini配置文件语法
1、读取配置文件数据的语法2、将常用获取配置文件方法封装成工具类原创 2021-12-30 13:30:11 · 1025 阅读 · 0 评论 -
Pycharm的.log文件带问号标识无法打开解决方案
生成的文件有问号标识无法打开时,多数情况均为文件编码格式问题,pycharm默认为GBK格式,需要转为UTF-8原创 2021-12-17 14:54:12 · 3256 阅读 · 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 · 7123 阅读 · 8 评论 -
Python自定义路径格式:OSError: [Errno 22] Invalid argument报错解决方案
将时间指定格式化后,文件名不支持":",与Windows文件命名规范需保持一致原创 2021-12-14 13:16:15 · 2346 阅读 · 0 评论 -
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 · 2059 阅读 · 1 评论 -
Python+Unittest - discover()构建不同目录下的用例
1、执行指定路径的所有用例unittest.defaultTestLoader.discover()方法2、执行指定类的指定用例unittest.TestLoader()方法原创 2021-12-09 18:36:29 · 2331 阅读 · 1 评论 -
Python+Selenium UI自动化 - Unittest+HTMLTestRunner生成测试报告以及忽略用例
1、HTMLTestRunner2、unittest.main(verbosity= N)用法3、verbosity+TextTestRunner将测试结果写入文本文件,控制台仅打印输出语句原创 2021-12-09 13:19:51 · 1183 阅读 · 0 评论 -
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 · 312 阅读 · 0 评论 -
Python+Selenium UI自动化 - Unittest基本使用语法、断言、执行顺序
1、Unittest语法规则及示例2、Unittest断言语法3、Unittest用例执行顺序原创 2021-12-08 00:13:02 · 1975 阅读 · 0 评论 -
Python+Selenium UI自动化 - cookie处理方法及适用场景
1、手动登录系统后,F12查看页面cookies的值,键值对的形式写入代码中2、打开验证码页等待一段时间,手工输入用户名密码验证码,driver.get_cookies()语法获取cookies值,直接从返回结果中复制3、将cookies写入Excel中,再读取Excel中的cookies原创 2021-12-07 18:19:15 · 1564 阅读 · 0 评论 -
Python+Selenium UI自动化 - 调用JS代码
1、上下滚动2、给属性加边框3、移除属性4、修改属性原创 2021-12-07 15:29:33 · 2210 阅读 · 1 评论 -
Python+Selenium UI自动化 - Select选择下拉框语法
三种方法定位select下拉框①通过索引:Select(select标签值).select_by_index(下标)②通过value值:Select(select标签值).select_by_value('value值')③通过文本:Select(select标签值).select_by_visible_text('文本值')原创 2021-12-07 12:58:29 · 2805 阅读 · 0 评论 -
Python+Selenium UI自动化 - alert/confirm/prompt窗口处理方法
1、alert:提示用户信息只有确认按钮2、prompt:有输入框、确认和取消按钮3、confirm:有确认和取消按钮原创 2021-12-07 00:23:49 · 3093 阅读 · 1 评论 -
Python+Selenium - 练习:打开京东->QQ登录->修改个人信息(含鼠标悬停后选中二级菜单进行点击)
QQ登录京东-修改资料举例覆盖知识点:1、id、name、link定位2、xpath、css定位及相对路径定位3、切入框架(点击账号密码登录页需先切入框架)4、多窗口切换选择句柄(点击账户信息时需定位句柄)5、鼠标悬停(鼠标移入账户信息唤起二级菜单)6、隐式等待、显示等待(文中使用显示等待是为了更清晰的看到脚本效果,可写可不写)原创 2021-12-03 14:27:03 · 969 阅读 · 0 评论 -
Python+Selenium UI自动化-Frame框架定位方法
1、通过下标切换,下标从0开始,从下往上,从左往右2、通过frame的id或name定位3、通过元素路径进行定位,先定位到框架的元素,然后切入框架原创 2021-12-02 00:18:00 · 6984 阅读 · 0 评论 -
Python+selenium UI自动化定位元素方法优先级
1、有id、name属性的,一般都是唯一的2、a标签优先考虑link属性3、优先使用css语法4、若是常规方法定位不到,则需要检查是否有框架或是需要切换页面5、检查是否需要先激活(页面同意弹窗、授权操作等)6、使用层级定位,层级定位的精确度比模糊匹配要高,由下往上找唯一属性原创 2021-12-02 00:03:04 · 4296 阅读 · 0 评论 -
Python+Selenium UI自动化-多窗口处理
举例:同时打开京东多个页面后,点击京东超市页面的山姆会员的店方法:输出所有页面的句柄(相当于窗口的身份证),遍历所有句柄,当句柄页包含某个唯一标识时,则选中停留import timefrom selenium import webdriverfrom selenium.webdriver.support.ui import WebDriverWait#显示等待导包driver = webdriver.Chrome()driver.implicitly_wait(10)#通常写在最前面,全原创 2021-11-29 13:49:50 · 1123 阅读 · 0 评论