1、分层设计思想、关键字驱动、数据驱动
1.1PO模式PageLocator、PageObjects、TestCases
例如:把30个功能封装起来,有500个功能测试用例,按照业务场景从30个页面当中调用需要的页面即可。PO模式,全称Page object,页面对象模型
将页面的元素定位和元素行为封装成一个page类,实现页面和测试用例的分离。
在测试用例中,需要调用页面对象中的行为,组成测试用例。
优势:
(1)当某个页面元素发生变化时,只需要修改该页面对象中的代码即可,测试用例不需要修改。
(2)提高代码复用率,结构清晰,维护代码容易。
(3)测试用例发生变化时,不需要或者只需要修改少数页面对象代码即可。
分层:Testdatas-重用、不同的环境不同的数据
1.2数据驱动:ddt模块,每个用例启动会话/所有用例启动会话,尽量不依赖测试环境-选择自己创建条件
尽量保证用例的独立性
保证用例的稳定性-连续运行5次-jenkins-尽早加入持续集成
定位表达式的灵活的 、等待方面的处理
用例不宜复杂,拆成多个用例,考虑成本,选择性变成自动化用例 。部分前置或后置,用接口来代替
basepage:关键字封装:等待、查找元素、点击、输入、获取文本、获取属性、窗口切换、iframe切换、上传、
元素的操作:等待、查找、操作
实现:页面当中的每一个操作,都进行了异常捕获、失败截图、操作时间记录、日志打印
Pageobjects当中,全部调用basepage提供的关键字,来封装业务函数
1.3pytest测试框架,更方便的筛选用例-冒烟/回归,更方便的用例组织
特点:1、自动发现测试用例test_*.py/*_test.py、test_的函数/Test类并没有初始化函数中的test_(函数)
2、assert断言
3、fixture(前置后置)测试会话级别(session)、测试模块(module)、测试类(class)、测试用例(function)
4、丰富的插件库,allure库
1.4Mark功能:
1、标签名先注册:pytest.ini [pytest] markes=smoke
2、测试用例/测试类/测试模块 测试用例:@pytest.mark.smoke
测试类/测试模块 :pytest.mark=[pytest.mark.smoke,pytest.mark.loginn]待确认
1.5pytest命令行:
1、pytest在按个目录下运行,那就在哪个目录中去搜索用例
2、根据标签过滤用例:-m标签名
3、-s -v 在控制台当中看到更详细的用例运行状态
1.6pytest测试报告:
1、xml--跟jenkins集成,就是解读xml文件
2、html--插件:pytest html 参数:--html-../../(相对pytest的命令执行目录的相对路径)
conftest.py
1、共享前置后置
2、不同的包目录当中,可以有自己的conftest.py
3、定义前置后置
@pytest.fixture(scope="")
def func1():
#前置
yield [返回值]
1.7、测试类/测试函数 @pytest.mark.usefixture("函数名称")
如果有返回值,那么把函数名称作为测试 用例的参数即可,函数名称-返回值
数据驱动:pytest参数化
1、@pytest.mark.parametries("param1",[1,2,3])
def test_1(param1):
pass
2、@pytest.mark.parametries("param1,param2",[(1,2),(3,4)])
def test_2(param1,param2):
pass
3、@pytest.mark.parametries("param1,param2",[1,2,3,4])
@pytest.mark.parametries("param2",[a,b])
def test_3(param1,param2):#两个参数排列组合,有8组测试用例
pass
失败重试机制:rerun,插件:pytest-rerun pytest命令参数(pytest --rerun 5 --reruns-delay 1)
1.8pytest allure报告生成:
1、allure 命令环境安装
2、pytest-安装allure插件 命令参数:--alluredir=../..(相对pytest执行目录的路径)
3、allure-serve
4、jenkins进一步集成:安装jenkins的allure 插件
PageLocator、PageObjects、TestCase(conftest.py)、TestDatas
common:basepage、logger、工程路径配置
outputs:日志、截图、报告
main.py:框架入口
API:接口
2自动化用例的规范
2.1自动化运行测试、测试用例组织、测试报告生成、测试日志自动生成、失败截图的自动生成、指定输出路径、提供入口
编写规范:团队合作
文件命名规范:函数命名规范、通用的英文名称(login,action)
元素定位规范:非绝对定位、定期互相检查
按模块分层次:事先搭好
良好的 注释
2.2pytest收集测试用例的规则:
1、符合命名规则test_*.py *_test.py
2、以test_开头的函数名
3、以Test开头的测试类(没有_init_函数),以test开头的函数
mark:打标签方法:@pytest.mark.标记名,运行用例的时候可根据标签名来过滤用例 @pytest.mark
fixture:主要目的是为了提供一种可靠和重复性的手段去执行那些基本的操作
用例执行时清理和准备 ,unnitest中指那些:setup(),teardown(),classSetup()classTeardown()
定义:函数类声明时,前面加上@pytest.fixture
区分环境准备和环境清理使用yield,yield后面的代码就是环境清理的
fixture设置返回值:yield 返回值
contest.py 定义公共的fixture,多个测试类中都可以调用,pytest提供了confest.py文件,可以将fixture定义在此文件中,运行时不需要导入这个文件,自动去查找,找到对应的fixture
2.4编写自动化测试用例应遵循的原则:
(1)一个用例为一个完整的场景,从用户登录到退出并关闭网页
(2)一个用例只为验证一个功能点,不要试图在用户登录系统后把所有功能都验一遍。
(3)尽量少的编辑逆向逻辑用例,例如手机号输错有几十种,另一方面自动化脚本比较脆弱,对于复杂的逆向逻辑实现容易出错
(4)用例与用例之间避免出现依赖
(5)一条用例执行完成测试之后需要对测试场景进行还原,以免影响其他用例的执行。
网友评论