文章目录
一、自动化测试
1.1 概念
自动化测试是相对于手工测试而言的,指把人为驱动的手工测试过程转化为机器/工具执行的一个测试过程。自动执行编写好的测试用例脚本,自动对比实际结果和预期结果,生成输出报告等。适用于在需要重复执行机械化的操作、计算等场合,实现更快速的回归,提高效率。
1.2 介绍
介绍 | 内容 |
---|---|
目标 | 减少测试当中的重复性工作 提高测试用例的执行效率 节省企业人力成本 弥补手工测试很难实现或实现成本很高的地方 方便定位缺陷出现的原因 |
优点 | 快速高效 可靠可重复使用 可以执行一些手工测试困难或不可能执行的测试 适合对程序的回归测试,方便 |
缺点 | 工具本身无法进行主观判断,如界面色彩和布局 有技术门槛 变更频繁的软件,开发维护成本更高,要求环境相对稳定 自动化测试工具本身是一个产品,会有兼容性问题局限 |
1.3 分类
阶段 | 类型 | 应用 |
---|---|---|
UT单元测试 | 单元自动化 | unittest、PyUnit、junit |
IT集成测试 | 接口自动化 | requests、urllib |
ST系统测试 | UI自动化 | selenium、UFT、appium、alltest |
1.4 Selenium
selenium基于UI界面在ST(系统测试阶段)进行Web应用的功能测试自动化框架(专指B/S结构web应用)
API:构造API、解析API
UI:定位元素、操作元素
多浏览器支持:Chrome、Firefox、Edge、Opera 、Safari …
多平台的支持:Linux、Windows、Mac …
多语言的支持:Java、Python、Ruby、JavaScript、Perl、C# …
二、环境
2.1 Python、Pycharm
参考《Python+Pycharm+Selenium+WebDriver自动化环境搭建》
2.2 Selenium
2.2.1 pip
pip install selenium
# C:\Users\username\pip\pip.ini
[global]
timeout = 6000
index-url = https://repo.huaweicloud.com/repository/pypi/simple
trusted-host = repo.huaweicloud.com
# 国内源
http://pypi.douban.com/simple/
http://mirrors.aliyun.com/pypi/simple/
https://pypi.tuna.tsinghua.edu.cn/simple
2.2.2 验证
# python交互环境
python
import selenium
2.3 Browser driver
Selenium WebDriver 通过原生浏览器的驱动直接控制浏览器
(1) 获取浏览器版本对应驱动,追加该驱动路径到环境变量Path
(2) 禁用浏览器更新/保持驱动与版本匹配
(3) 浏览器包括 chrome、firefox、edge、ie、safari
2.4 Non-GUI 无头模式(无界面)
from selenium import webdriver
# 配置对象
opt = webdriver.FirefoxOptions()
# 配置参数
opt.add_argument('--headless') # 开启无头
opt.add_argument('--disable-gpu') # 禁用GPU
# 实例化有配置的webdriver对象
wd = webdriver.Firefox(options=opt)
# 操作
wd.get('https://www.vmall.com/')
wd.save_screenshot("capture.png")
print(wd.title)
wd.quit()
其他配置参数:
opt.add_argument('--start-maximized') # 最大化防止取元素报错
opt.add_argument('--incognito') # 隐身模式
opt.add_argument('--blink-settings=imagesEnabled=false') # 禁用加载图片提升速度
三、Selenium API
Selemnium
自动化测试应用程序编程接口(API)如下:
3.1 WebDriver
3.1.1 WebDriver 对象
3.1.1.1 导入方式1
首先,导入 webdriver
基类
from selenium import webdriver
然后,创建 webdriver
对象 wd
1,继承 webdriver
基类方法与属性;
wd = webdirver.Browser() # Browser 须大写 Firefox,Chrome,Edge,Ie,Safari
例如,在 unittest
的 setUp()
测试固件中,继承webdriver
基类:
import unittest
from selenium import webdriver
class TestSth(unittest.TestCase):
def setUp(self) -> None:
# self.wd继承webdriver基类
self.wd = webdriver.Firefox()
3.1.1.1 导入方式2
按以下方法,也可以导入 WebDriver
基类,browser
须小写 firefox,chrome,edge,ie,safari
from selenium.webdriver.browser.webdriver import WebDriver
例如,在 unittest
的 setUpClass()
测试固件