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入门[3] -> 正文阅读

[开发测试]Pytest入门[3]

目录

一、pytest默认的测试用例规则

二、pytest详细介绍

三、pytest的运行方式

四、改变pytest用例执行顺序

五、pytest还有一些前后置功能

六、接口关联(需要把所有的全局变量都集中管理)

七、生成漂亮的allure报告

八、解决一个接口只有一个用例的问题?(数据驱动)

九、90%企业都是通过Yaml来管理接口自动化测试的用例


一、pytest默认的测试用例规则

1.模块名必须以test_开头或_test结尾

2.测试类必须以Test开头

3.测试方式必须test_开头

1.发现测试用例:从多个py文件里面找到我们的测试用例

2.执行测试用例:按一定的顺序执行,并且生成报告

3.判断测试结果,断言

4.生成测试报告:allure报告

python:pytest,unittest

java:junit,testng

二、pytest详细介绍

1.pytest是一个成熟的python单元测试框架

2.它能够和自动化测试工具,selenium,requests,applum结合实现自动化

3.skip跳过用例,reruns失败用例重跑,多线程。

4.pytest和allure生成美观的测试报告。

5.它结合jenkins实现持续集成。

6.pytest有很多的插件

? ? ? ? pytest? ? ? ? ? ? ? ?本身

? ? ? ? pytest-html? ? ? 生成html报告的插件

? ? ? ? pytest-xdist? ? ? 实现多线程

? ? ? ? pytest-ordering? 改变测试用例的执行顺序

? ? ? ? pytest-rerunsfailures 失败用例重跑

? ? ? ? allure-pytest 生成allure报告

三、pytest的运行方式

1.main()方式运行

if __name__=='__main__':
    pytest.main(['-vs'])

2.命令行方式运行

pytest -vs

3.通过配置文件pytest.ini运行

不管你是main方式运行也好,还是命令行方式运行也好,都会自动的读取这个配置文件去执行

-vs? ? ? ? ? ? ? -v打印详细信息,-s打印调试信息

-n? ? ? ? ? ? ? ? -n表示多线程运行

--reruns? ? ? ?失败用例重跑(--reruns 2 用例失败后执行两次)

--html=路径? 生成html的报告

-m? ? ? ? ? ? ? ? 指定带标记的测试用例

四、改变pytest用例执行顺序

class TestMashang:
     @pytest.mark.run(order=2)
     def test_baili(self):
         print("百里")
     @pytest.mark.run(order=1)
     def test_weiwei(self):
         print("微微")

五、pytest还有一些前后置功能

每个用例之前和之后,以及每个类之前和之后

def setup(self):
    print("在每个用例之前执行一次,如:打开浏览器,加载网页")
def teardown(self):
    print("在每个测试用例之后执行一次,如:关闭浏览器")
def setup_class(self):
    print("在每个类之前执行一次,创建日志对象,创建数据库连接")
def tear_down(self):
    print("在每个类之后执行一次,关闭数据库连接,销毁日志对象")

如果有10000个用例,我希望的是在其中的三个用例里面需要做前后置

部分类前后置。使用fixture装饰器。

方法如下:

@pytest.fixture(scope="作用域",params="数据驱动",autouse="自动执行",ids="数据驱动时重命名参数名",name="给fixture作用的函数重命名")

1.scope参数?:?

function? ? ? 函数

class? ? ? ? ? 类

module? ? ? ?模块

package/session 回话

部分类的前后置

@pytest.mark.usefixtures('execute_database_sql')
class TestAaa:
   def test_aaa(self):
       print("test_aaa")

会话的前后置,一般会结合conftest.py文件一起使用

1.conftest.py单独用于存放fixture固件的配置文件

2.在conftest.py中固件在使用时不需要导包。

3.可以有多个conftest.py文件

六、接口关联(需要把所有的全局变量都集中管理)

比较成熟的是:通过一个单独的yaml文件管理

接口自动化测试框架封装的第一步:接口关联封装

思想比脚本重要

七、生成漂亮的allure报告

1.官网下载allure

下载之后解压保存到E盘,并且需要把bin路径配置到path里面

2.验证allure安装是否成功

allure --version

3.生成allure报告

(1)生成临时的json格式的报告

? (2)生成html报告

? ?os.system("allure generate ./temps -o ./reports --clean ")

八、解决一个接口只有一个用例的问题?(数据驱动)

@pytest.mark.parameter(args_name,args_value)

args_name:参数名,字符串

args_value:参数值,(list,tuple,字典列表,字典元组),有多少个值那么测试用例就会执行多少次

第一种用法:

@pytest.mark.parameter("caseinfo",['百里','微微','晴天'])
def test_get_token(self,caseinfo):
    print(caseinfo)

第二种用法:解包

@pytest.mark.parametrize("name,age",[['百里','13'],['依然','11']])
def test_get_token(self,name,age):
    print(name,age)

九、90%企业都是通过Yaml来管理接口自动化测试的用例

yaml是一种数据格式,主要用于配置文件或编写用例

yaml只有两种数据

1.键值对:

access_token:value

2.list.用一组横线开头表示(-)

操作yaml所使用的第三方库不是yaml,而是pyyaml

一个py文件可以有多个接口

一般一个接口对应一个yaml文件,一个yaml文件里面就有几十个用例,有正例和反例。

class AllRequest:
    session = requests.session()
    def all_send_request(self,method,url,data,**kwargs):
        method=str(method).lower()
        res=None
        if method =='get':
            res=AllRequest.session.request(method=method,url=url,params=data,**kwargs)
        elif method=='post':
            strdata=json.dumps(data)
            res=AllRequest.session.request(method=method,url=url,data=strdata,**kwargs)
        else:
            print("不支持的请求方式")
        return res

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2022-01-28 12:13:05  更:2022-01-28 12:15:28 
 
开发: 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 2:30:03-

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