测试框架之pytest
[TOC]
本文是学习了《Selenium自动化测试完全指南》和其他网络上的教程写出的学习笔记
Pytest简介Pytest是目前最成熟、功能最全面的Python测试框架之一。
简单灵活,容易上手,而且支持参数化与测试编排功能,对其他测试框架(例如Nose、UnitTest等)也能完全兼容。Pytest的第三方插件非常丰富,拥有非常良好的扩展性
安装1pip install pytest
使用使用Pytest编写测试,必需遵守以下基本规则,否则测试无法正常运行
测试文件的名称以“test_”开头(或以“_test”结尾)
测试类的名称以Test开头,并且不能带有__init__方法
测试函数的名称以“test_”开头
断言使用基本的“assert {表达式}”即可。如果表达式为True,则断言通过;否则,断言失败。
举例:test_example.py
123456789class TestClass: def test_char_in_string(self): string = "this" char = "h&q ...
selenium测试案例讲解
[TOC]
本文是学习了《Selenium自动化测试完全指南》和其他网络上的教程写出的学习笔记
测试的基本要素
测试最基本的两个要素是测试输入和预期输出结果。
案例:异步社区登录
123456789101112131415161718192021222324252627#coding: utf-8import timefrom selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.wait import WebDriverWaitwd = webdriver.Chrome()wd.get("https://www.epubit.com/")# 测试输入:登录操作WebDriverWait(wd,5).until(lambda p:p.find_element(By.XPATH,"//div[contains(@class,'login')]/i[1]").is_displaye ...
测试导论
[TOC]
测试介绍什么是测试?运行程序,发现bug。
验证程序的正确性、完整性、安全性和质量的过程
测试的分类
按开发阶段
单元、集成、系统、验收
按是否接触代码
黑盒、白盒、灰盒
按是否运行
静态、动态
按测试对象
性能、安全、兼容性、文档、用户体验、业务、界面、安装、内存泄漏
按测试实施的组织
α、β、第三方测试
按是否手工
手工、自动化
其他
冒烟、回归
什么是自动化测试?自动化测试是软件测试活动中一个重要分支和组成部分,随着软件行业发展,市场对软件周期及软件质量要求越来越高,催生出来各种开发模式,比如常见开发模式敏捷开发,同时对我们测试人员提更高的要求,此时,产生自动化测试,即通过工具或者脚本来达到测试的目的,没有人工或者很少人工参与的软件测试活动叫自动化测试
自动化测试就是将测试流程从手工转换为自动化实现形式
自动化测试技术是目前业内特别流行也是特别主流的一个测试技术,是目前测试人员最为核心的能力之一
[]什么是框架?
框架(framework)是一个框子——指其约束性,也是一个架子——指其支撑性。是一个基本概念上的结构,用于去解决或者处理复杂的问题。
在软 ...
selenium_webdriver高级运用
[TOC]
本文是学习了《Selenium自动化测试完全指南》和其他网络上的教程写出的学习笔记
selenium的等待机制
人们在手工测试网站时,总会自然而然地等待网页加载完毕再进行操作。如果某个局部区域是由Ajax加载的内容,人们要等待局部加载完毕才能进行下一步操作,而不是在空白或残缺的界面上操作。另一方面,如果等待超过一定时间,但页面或局部区域依然没有加载完毕,那么人们很可能将其标记为一处程序错误,要求开发人员去排查这个问题。
Selenium拥有丰富的等待机制,将原本人为的等待转换为由机器去等待,并判断什么时候该进行下一步操作
页面级等待机制
等待页面加载完毕的超时时间,默认为0
12345wd.set_page_load_timeout(最长等待秒数)# 全局设置,会在整个WebDriver实例的生命周期内生效# 未在规定时间内加载完毕,会抛出异常selenium.common.exceptions.TimeoutException: Message: timeout
元素级等待机制
现代网站大多数是Ajax型网站,很多页面元素都不再是页面加载完毕就能显示出来,而是要 ...
selenium_webdriver
[TOC]
selenium webdriver简介
本文是学习了《Selenium自动化测试完全指南》和其他网络上的教程写出的学习笔记
介绍
WebDriver是一种API和协议,它定义了一种不依赖于编程语言、用于控制Web浏览器行为的接口
Selenium通过WebDriver来支持各种浏览器的自动化。
每种浏览器还需要有一个特定的基于WebDriver的实现来负责控制浏览器,这种实现称为驱动程序。驱动程序通常为可执行文件(.exe),一般由浏览器厂商开发并提供。
安装查看自己的浏览器版本,然后搜索对应浏览器驱动版本进行下载,解压出压缩包内的Chormedriver.exe文件,配置该文件所在目录到环境变量Path(可选).
测试使用12345678910from selenium import webdriverfrom selenium.webdriver.chrome.service import Service#option = webdriver.ChromeOptions()# 创建 WebDriver 对象,指明使用chrome浏览器驱动wd = webdrive ...
selenium_IDE
[TOC]
selenium IDE简介
本文是学习了《Selenium自动化测试完全指南》和其他网络上的教程写出的学习笔记
安装selenium IDE实际上是一个浏览器插件,可从浏览器的插件商店下载。
步骤:打开浏览器–>扩展程序–>获取更多插件–>搜索–>下载
接下来就能在右上角看到图标了
功能selenium IDE主要功能就是实现浏览器的自动操作,它拥有录制与回放功能,可以理解为鼠标录制的那种。
区别:鼠标录制是跟随时间刻印操作过程,selenium则是记录操作节点,例如对某个元素click,然后type输入,然后将这些记录的操作节点交给浏览器驱动器,由webdriver完成复现。(早期selenium是通过注入js来模拟,自从根据W3C各浏览器厂商都有了webdriver后,此方法selenium RC已在selenium3中被抛弃)
其他功能硬要说的话,还能拆出验证功能(assert)、导出为python等语言的代码、自己设定操作命令的功能。
使用方式界面操作,使用很简单,可参考《Selenium自动化测试完全指南》或其他网络教程学习
sele ...
Pyqt案例(二)语音测试工具
[TOC]
语音测试工具
代码文件:我的github
使用教程
两大测试场景
唤醒测试
只播放唤醒语音,判断设备是否被唤醒
识别测试
播放唤醒语音和识别语音,判断设备识别内容是否正确
三个连接方式
adb_wifi
adb无线连接,通过adb connect IP地址命令实现。
adb
adb有线连接,通过usb接口与设备物理连接
serial
serial串口连接,同样通过usb接口与设备物理连接,与adb区别是设备提供接口协议不同
输入字段
唤醒
识别
语料地址(测试语音用例)
√
√
保存地址
√
√
测试数量(非随机)
√
√
设备日志路径
√
√
期望值
√
唤醒正则表达式
√
√
识别正则表达式
√
ip地址/串口
√
√
唤醒语料地址
√
保存地址:测试会生成日志文件、结果表单和统计结果三个文件,保存地址是三个文件的存储路径
设备日志路径:测试需要提取设备的日志,所以需要给出设备中的日志路径
期望值:无太大作用,仅在唤醒正则表达式判断正确时,做记录使用
正则表达式:提取设备日志中的 ...
pyinstaller打包报错
[TOC]
Pyinstaller打包打包指令1>pyinstaller -D -w xxx.py
其他参数1234-F等同于--onefile# 打包为单个文件,如果项目仅为一个.py文件时可用,多个文件不可
123-D--onedir# 打包为一个目录
12--key=keys# 使用keys进行加密打包
1234-w--windowed--noconsole# 去掉控制台窗口,执行时不会启动命令行(windows系统)
123-c--console# 打开控制台窗口,使用控制台子系统执行,当程序启动的时候会打开命令行(默认)
123-i file.ico--icon=<file.ico># 程序的图标
123-h--help# help查看命令
12# 其他(不常用)-v, --version #版本
打包产生的文件打包单文件
exe文件
生成的可执行文件可以在 dist 文件夹中找到
包含了你的 Python 代码和所有依赖项,以便你可以在其他计算机上运行它而无需安装 Python 解释器或其他依赖库。
生成的可执行文件的名称通常与你的 Py ...
读书笔记《你是吃出来的》
[TOC]
慢病时代——饮食革命带来防治新契机我们活在快餐当道的世界,身体却困在了石器时代疾病的本质:细胞损伤速度超过修复速度不健康的心理或者不合理的饮食、运动、睡眠等生活方式会造成细胞损伤,影响细胞修复。
很多“慢病”,如冠心病、高血压、糖尿病、肿瘤、抑郁症、气管炎、哮喘、慢性肾病等,都是由不健康的生活方式导致的。
慢病的治疗方式是对抗治疗,血压高吃降压药,血糖高了用降糖药,肿瘤长出来了切除,哮喘用抗哮喘药。这是无法治愈的,因为慢病的根本原因是长期不健康生活导致的,你更需要改变生活方式,特别是饮食,因为在细胞损伤和修复的博弈过程中,能给细胞修复提供原料的只有饮食。
人体细胞的自我修复能力取决于两个主要因素,一个是与生俱来的细胞生命周期,另一个是后天的营养状况,即先天因素和后天因素。先天因素(细胞固有的更新周期)决定了修复速度,后天因素(营养状态)决定了修复质量。
修复细胞损伤的唯一原料:食物中的营养素七大营养素:
碳水化合物(又称为糖类,包括葡萄糖、果糖、麦芽糖、淀粉等)
蛋白质(分为必需氨基酸和非必需氨基酸)
脂类(分为脂肪和类脂,脂肪又叫甘油三酯,分为必需脂肪酸和非必需脂肪 ...
python之函数参数
形式参数和实际参数形式参数:在定义函数时,函数名后面括号中的参数为“形式参数”。
实际参数:在调用一个函数时,函数名后面括号中的参数为“实际参数”,也就是将函数的调用者提供给函数的参数称为实际参数。
实际参数的类型不同,传递参数可分为两种情况,值传递和引用传递。
值传递:当实际参数为不可变对象时,改变形参的值,实际参数不变
引用传递:当实际参数为可变对象时,改变形参的值,实际参数改变
例:
123456789101112131415# 定义函数def demo(obj): print("原值:",obj) obj+=obj# 调用函数print("------值传递------")mot = "hello world!"print("函数调用前:",mot) # hello world!demo(mot) # 不可变对象print("函数调用后:",mot) # hello world!print("------引用传递------")lst = ...