po设计模式,pytest引入
Posted addicated
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了po设计模式,pytest引入相关的知识,希望对你有一定的参考价值。
po设计思想
1,什么是po
pageobject是一种涉及模式
减少冗余的代码和对代码进行管理
分离测试步骤及测试对象
2,po的好处
提高代码复用率
集中管理定位信息,提高可维护行,
代码可复用,降低成本,
不同po之间没有交叉,可团队并行开发
po设计原则
1,总的原则
封装basepage,提取出来各个page中的公共方法
所有的po继承basepage
2,方法封装原则
共有的方法,点击,输入内容,获取元素节点内容,等待
滑动页面,执行js代码等等
3,定位封装原则
将每个po类的定位xpath分类做为类属性进行封装,命名风格统一,做到见名知意
pytest引入
pytest标记
@pytest.mark.skip 在用例方法上使用,即可跳过用例的执行
@pytest.mark.xfail 标记预期不会通过的用例
自定义
1,注册标记:在启动文件同级目录下创建一个 pytest.ini的配置文件
2,在pytest.ini添加一个 pytest配置块
3,在pytest的配置块下面加一个mjarkers的配置项
4,在markers的配置项中去注册标记
5,给对应的用例打标记,
@pytest.mark.注册的标记名称
[pytest]
markers =
addicated
yuze
class_
- 给类打标记
1,直接在类上面打
2,通过类属性的pytestmark
class TestDome1:
pytestmark = [pytest.mark.class_, pytest.mark.musen]
def test_demo1_01(self):
assert 1 == 100
def test_demo1_02(self):
assert 100 == 100
断言
assert断言, 根据assert后面的表达式的结果是True还是False来决定是否断言通过
原生的测试报告
pip install pytest-html
第一种 log 普通文本 TextTestRunner
--resultlog=report/demo.txt 相对路径
第二种 xml,生成xml文件
--junitxml=report/demo.xml jenkins使用
html和xml 标记性语言
第三种 html HTMLTestRunner
--html=report/demo.html
用例编写
pytest编写用例,不使用ddt,因为不兼容,
pytest中使用pytest.mark.parameterize来实现数据驱动,给用例传参
注意点
要么按照unittest的规则来写,数据驱动,前后置都用unittest中的
要么按照pytest来写,数据驱动,前后置都是pytest中的
回顾一下unittest中的ddt
# --------------------unittest中的数据驱动实现--------------------------
pytest的数据驱动实现
pytest的前后置方法
用例级别
用例类级别
# 类级别的前置后置
用例模块级别
会话级别
前置条件与用例数据交互
使用一变量接收来自前置执行的结果,前置将需要返回给用例的内容卸载yield后,就可以直接接收,
注意:实例中注释掉的方法只限于 不需要将前置中的数据传给用例的情况下才适用。
pytest与unittest之间的对比
1,pytest兼容unittest,使用unittest写的用例,可以通过pytest去执行
2,pytest写用例更简单
3,加载用例更智能
4,pytest可以对用例进行分类管理,执行用例更加的灵活
5,unittest是python中的官方库,兼容性更好,更稳定,pytest在安装的时候可能会出现同python版本的兼容问题
6,pytest支持的插件分厂丰富,功能扩展性强
7,pytest用例执行的前置后置处理更加高级
以上是关于po设计模式,pytest引入的主要内容,如果未能解决你的问题,请参考以下文章