IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> pytest -> 正文阅读

[开发测试]pytest

pytest测试框架

前言:pytest是 python 的第三?单元测试框架



前言

提示:仅供参考 如有问题请留言


一、环境搭建

?先使? pip 安装 pytest

pip install pytest
pip install pytest-html #原?态报告模板
pip show pytest   #查看 pytest 是否安装成功

二、使? pytest 执?测试需要遵?的规则

1.py测试文件必须以test_开头或者以_test结尾

2.测试类必须以Test开头,并且不能有init方法

3.测试方法必须以test_开头

4.断言使用assert

代码如下(示例):

"""
需求:断言预期结果与实际结果是否一致

分析需求:
1-需要拿到实际结果
2-需要取到预期结果
3-断言两方结果的一致
4-断言失败 需抛出异常

解决方案:
1-需要pytest框架中mark装饰器的parametrize做数据驱动
2-调用业务层中的login获取到实际结果
3-调用方法包中的excel
4-断言失败:需要进行try except 封装,避免在每个接口中重复使用try excpet

"""

import pytest
from utils.handle_yml import getYamlCase
from utils.handle_path import case_tmsLoginPath
from utils.handle_path import tmsConfig_path
from libs.login import Login
from common.baseAPI import apiAssert

getyamlcase = getYamlCase(case_tmsLoginPath,'loginIn')

class TestLogin:
    @pytest.mark.parametrize('title,inData,expData',getyamlcase)
    def test_login(self,title,inData,expData):
        res = Login(filePath=tmsConfig_path).loginIn(inData)
        apiAssert.get_api_assert(res,expData)

if __name__ == '__main__':
    #可以使用main方法来运行
    pytest.main(['test_tmsLogin.py','-s'])

三、pytest中的四种setup和teardown

1、setup_method和teardown_method在class内的每个?法运?前后运?;

2、setup_function、teardown_function则是在?class下的每个测试?法的前后运?;

3、setup_class和teardown_class则在整个?件中的?个class中所有?例的前后运?;

4、setup_module和teardown_module在整个测试?例所在的?件中,所有的?法运?前和运?后运?,只运??次;

执?:pytest test_login.py -s '-s 输出print信息'

四、pytest 环境初始化与数据清除

4.1 fixture 源码详解

fixture(scope='function',params=None,autouse=False,ids=None,name=None):

1.scope:有四个级别参数"function"(默认),"class""module""session"

2.params:?个可选的参数列表,它将导致多个参数调?fixture功能和所有测试使?它。

3.autouse:如果True,则为所有测试激活fixture func可以看到它。如果为False则显示需要参考来激活fixture

4.ids:每个字符串id的列表,每个字符串对应于params这样他们就是测试ID的?部分。如果没有提供ID它们将从params?动?

5.name:fixture的名称。这默认为装饰函数的名称。如果fixture在定义它的统?模块中使?,夹具的功能名称将被请求夹具的功
问题的?种?法时将装饰函数

4.2 fixture 的作用范围

fixture里面有个scope参数可以控制fixture的作用范围:session>module>class>function

1. session 会话级别:是多个文件调用一次,可以跨.py文件调用,每个.py文件就是module

2. module 模块级别:每一个.py文件调用一次,该文件内又有多个function和class

3. class 类级别:每一个类调用一次,一个类中可以有多个方法

4. function:默认模式,每一个函数或方法都会调用

4.3 调用fixture 的三种方法

1、函数或类???法直接传fixture的函数参数名称

@pytest.fixture()
def test1():
print('开始执?function')
def test2(test1):
print('---?例test2执?---')

2、使?装饰器@pytest.mark.usefixtures()修饰需要运?的?例

import pytest
@pytest.fixture()
def test1():
print('\n开始执?function')
@pytest.mark.usefixtures('test1')
def test_a():
print('---?例a执?---')

3、叠加usefixtures

如果?个?法或者?个class?例想要同时调?多个fixture,可以使?@pytest.mark.usefixture()进?叠加。注意叠加顺序,先执?
上层。

@pytest.fixture()
def test1():
print('开始执?function1')
@pytest.fixture()
def test2():
print('开始执?function2')
@pytest.mark.usefixtures('test1')
@pytest.mark.usefixtures('test2')
def test_a():
print('---?例a执?---')

3.1、usefixtures与传fixture区别

1. 如果fixture有返回值,那么usefixture就?法获取到返回值,这个是装饰器usefixture与?例直接传fixture参数的区别。

2. 当fixture需要?到return出来的参数时,只能将参数名称直接当参数传?,不需要?到return出来的参数时,两种?式都可以。

3.2、fixture?动使?autouse=True

1. 当?例很多的时候,每次都传这个参数,会很麻烦。fixture??有个参数autouse,默认是False没开启的,可以设置为True开启?
样?例就不?每次都去传参了

2. autouse设置为True,?动调?fixture功能
  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2022-01-01 14:14:47  更:2022-01-01 14:17:15 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 5:41:35-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码