【自动化总结1】pytest使用整理

  1. pip intall pytest—— pip show pytest

  2. pip install pytest-sugar –命令行运行更好看

  3. pip install pytest-html 原生态报告模板

  4. pip install allure-pytest

  5. allure的压缩包解压后配置环境变量—–能够执行allure命令

【自动化总结1】pytest使用整理

1. pytest 框架

用例编写规则:三test

“三test” : test.py Test类 test**方法

用例运行

两种运行模式(在setting—tools—python Intergrated Tools)

1.Pytest运行模式:

点击小箭头即可运行、右键run运行也可以(pytest模式下不会执行到mian下的代码)

【自动化总结1】pytest使用整理

unitest运行模式:

  • 可以执行到main下的代码,通过pytest.main来收集用例并执行,并生成报告
  • pytest.main([file]) # file 表示当前目录
    • pytest.main([‘test_***.py’, ‘-s’ ]) # -s为打印信息,如有print就会打印出来
    • pytest.main([‘test_***’,’-s’,’–alluredir’, ‘../report/tmp’]) # 生成报告 + 报告路径
      • pytest.main([‘test_login.py’,’-s’,’–alluredir’,’../report/tmp’,’–clean-alluredir’]) # 清空之前的报告 +再生成报告

除了使用 –clean-alluredir 参数清空之前的报告文件,还可以使用如下笨方法

【自动化总结1】pytest使用整理

打开报告的两种方法

打开报告方式1:启动allure服务

allure serve “报告路径” (推荐)

【自动化总结1】pytest使用整理

打开报告方式2:生成html文件等报告文件

allure generate “报告路径” –o “生成html的路径” –-clean (cle an表示清除之前html )

【自动化总结1】pytest使用整理

命令行运行

命令行运行的参数和unittests模式下main中的写法类似,参数是一样的

pytest test_***.py –s

【自动化总结1】pytest使用整理

命令行运行,做一个bat用例文件

【自动化总结1】pytest使用整理

cd ./testCase

pytest -s –alluredir ../outFiles/report/tmp –clean-alluredir

allure serve ../outFiles/report/tmp

其他参数

用例筛选执行 -m

装饰器的 跳过 ,skip

在回归测试里面,开发修改了一个业务的bug,需要对部分接口做业务测试,就可以筛选出对应的业务模块的接口

mark标签

  • 模块、类、方法都可以加上标签
  • 定义:@pytest.mark.shop_list
  • 运行时 pytest -s -m 标签名 pytest,main([‘—.py’,’-m’,’标签名’])

【自动化总结1】pytest使用整理

给测试类,方法打标签,执行标签运行deselected表示未选中的用例数

打了标签之后,会出现一些警告,pytest不认识这些标签

  • 工程目录下,新建pytest.ini
  • 插件下载 setting plugins 搜索 ini (安装后才有图标)

pyttest.ini中定义标签,让pytest认识标签,解除警告

-m的其他用法

【自动化总结1】pytest使用整理

-k, -v

【自动化总结1】pytest使用整理

如果想在接口下,再筛选具体的用例,利用读取excle来筛选

pass-50期

skip装饰器跳过

pytest中的跳过用例———记录在面试题回答里

命令行中,运行时 -s,改成 rs,会更好的展示原因(命令窗口中)

在自动化测试过程中,会遇到功能阻塞,功能未实现,就可以用跳过 skip 用例,这样可以IBU用注释掉 或者删除掉, 特别是在ui自动化中,执行一个用例需要几十秒时间

并且设置跳过 在allure报告中是可以看见的,是置灰的

无条件的跳过

@pytest.mark .skip(renson=’列出接口后端没有实现,暂时不运行’)

有条件的跳过

@pytest.mark .ifskip(2>1,renson=’列出接口后端没有实现’)

前面是表达式,如果为真,就跳过

工作中,可以把装饰器定义成变量,其他地方可以快速写

【自动化总结1】pytest使用整理

skipif的用法:

【自动化总结1】pytest使用整理

【自动化总结1】pytest使用整理

用例筛选工作中实际用法,使用run文件跑部分业务

比如要运行单个某个业务模块(商铺)

  1. 可以写 一个run.py文件 ,运行时,用 python run.py

(1) 每次运行时改配置文件

cd 到这个testCase

pytest -s -m shop_list

  1. 写个bat文件 (每次运行都需要改文件)

【自动化总结1】pytest使用整理

初始化和清除

使用介绍

自动化用例尽量保证用例和用例之间没有关系,都能单独运行,所有要设置初始化和清除

方式1:setup 和 teardown (方法级别、类级别、模块级别)

【自动化总结1】pytest使用整理

方式2:@pytest.fixture() 装饰器,更加灵活,可以设置范围,可以部分用例使用

注:

  1. scope有function(默认) class module(一个.py) package/session

(1) module , package/session 都是写在conftest.py中的

(2) package代表包 seesion代表能共享conftest的所有文件,和package差不多

  1. 方式2的优先级优先于方式1,如下面的例子中方式2的function范围可以看出

  2. 当方式2,不是自动调用时autouse=Flase 默认的,有两种调用方式,如下图

  3. 当初始化有返回值时,不能用@pytest.mark.usefixtures(“**”) 方式

  4. conftest.py 中的方式2 优先于 用例中的方式2

  5. 把方式2的初始化和清除写在conftest.py中,( 共享的初始化清除

yield区分是初始化还是清除,并且可以用来返回值

【自动化总结1】pytest使用整理

【自动化总结1】pytest使用整理

1.手动调用pytest的fixture两种方式(autouse为False的时候)

【自动化总结1】pytest使用整理

方式1:可以使用usefixtures装饰器

方式2:也可以直接把 初始化函数名当成参数传个用例(适用有返回值的)(如下图)

【自动化总结1】pytest使用整理

2.pytest的fixture (默认是function)更优先unittest的 setup和teardown

autouse 参数的用法

【自动化总结1】pytest使用整理

conftest特点

优先级:conftest中的fixture优先于py文件中的fixture

【自动化总结1】pytest使用整理

作用域:conftest文件是有作用域的,内层的用例能调到外层的fixture

【自动化总结1】pytest使用整理

以前的使用场景

不同项目下,都有个conftest,写了module前置登录自己项目,然后存token等

【自动化总结1】pytest使用整理

也可以利用 setup_class(self): 初始化实现登录,可做特殊账号的登录

【自动化总结1】pytest使用整理

针对用例做的初始化,一般设置为function范围,自己调用

【自动化总结1】pytest使用整理

pytes t自带的 数据驱动 (参数化)

使用介绍

可以将数据,传入用函数中

格式: [[],[],[]] 或者 [(),(),()]

【自动化总结1】pytest使用整理

使用过的场景

可以获取excle中的每行用例,然后一个数据得到一个字典,传给用例

【自动化总结1】pytest使用整理

【自动化总结1】pytest使用整理

重复执行查看稳定性

@pytest.mark.repeat(2) # pip install pytest-repeat #

pytest的断言

使用pytest.assume(a == b)断言,断言失败后后续代码还能继续跑 pip install pytest-assume

3. allure库及jinkens的allure插件的应用

环境:

1.下载allure.zip ,解压,把\bin目录添加到环境变量path—能使用allure 命令

2.pip install allure-pytest

(1) allure的装饰器介绍

1.@allure.description_html 可以添加html标签

【自动化总结1】pytest使用整理

2.@allure.description()这种,直接加字符串

3.allure.attach()

a.可用来在报告中显示执行结果: 两个方式,推荐下面的方式

allure.attach( “{0}”.format(res),”用例结果”)

allure.attach(f”{res}”, “其他变量或字符串”, allure.attachment_type.TEXT)

【自动化总结1】pytest使用整理

【自动化总结1】pytest使用整理

b.展示图片、mp4等

allure.attach(file,”附件名字”,allure.attachment_type.JPG)

【自动化总结1】pytest使用整理

【自动化总结1】pytest使用整理

4.标题层级

@allure.epic(“电子证照”)

@allure.feature(“电子驾驶证”)

@allure.story(“车辆选择列表”)

@allure.title(“{inData[testPoint]}”)

其中@allure.title 可以用变量,其他暂时没发现可以

如:以上inData是一个字典,注:[]中不要写引号

5.with allure.step(“支付”): 可以给步骤取名字,可以对一些流程用例的

【自动化总结1】pytest使用整理

也可以在某个方法上面写 装饰器 (这样可以展示参数)

【自动化总结1】pytest使用整理

【自动化总结1】pytest使用整理

应用

【自动化总结1】pytest使用整理

【自动化总结1】pytest使用整理

pytest结合allure来用例进行过滤

【自动化总结1】pytest使用整理

Original: https://blog.csdn.net/Ataoker/article/details/125631365
Author: A~taoker
Title: 【自动化总结1】pytest使用整理

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/774438/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Redis——数据操作

    2022-09-20 Redis——select Redis数据库中的数据库的个数为: 16个,使用0号数据库开始的,到第15个数据库结束。 在ubantu中,进入Redis客户端…

    Python 2023年6月9日
    060
  • pythonmatplotlib刷新_matplotlib实现数据实时刷新的示例代码

    前言 matplotlib是python下非常好用的一个数据可视化套件,网上相关的教程也非常丰富,使用方便。本人需求一个根据实时数据刷新曲线的上位机软件,找了半天,基本上都是使用m…

    Python 2023年9月4日
    050
  • MySQL数据库面试题总结(2022最新版)

    🐶 程序猿周周⌨️ 短视频小厂BUG攻城狮🤺 如果文章对你有帮助,记得关注、点赞、收藏,一键三连哦,你的支持将成为我最大的动力 本文是《后端面试小册子》系列的第 1️⃣ 篇文章,该…

    Python 2023年11月5日
    032
  • 第5课python植物大战僵尸-添加豌豆射手类

    提示:第5课python植物大战僵尸-添加豌豆射手类 `今天将继续植物大战僵尸游戏,首先回顾上一次课,在屏幕窗口贴上了一张游戏背景,也就是植物大战僵尸的草地。然后再贴了一张太阳花银…

    Python 2023年9月20日
    049
  • Python技法:浮点数取整、格式化和NaN处理

    🚀 优质资源分享 🚀 学习路线指引(点击解锁)知识定位人群定位 进阶级本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。 入…

    Python 2023年8月9日
    060
  • Pnadas学习day-01

    Pandas学习day-01 import pandas as pd import numpy as np Pandas基本数据结构 pandas中有两种基本结构 Series 一…

    Python 2023年8月9日
    051
  • 【Django】Django路由urls详解

    例 : urlpatterns = patterns(”, url(r’^hello/$’,hello), ) 我们在写URL时实际上写的是正则…

    Python 2023年8月5日
    031
  • 『忘了再学』Shell基础 — 19、使用declare命令声明变量类型

    🚀 优质资源分享 🚀 学习路线指引(点击解锁)知识定位人群定位 进阶级本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。 入…

    Python 2023年8月12日
    040
  • 爬虫Scrapy笔记

    爬虫虫案例使用网址:Scrape Center 1. Scrapy框架 pip install scrapy pip install pypiwin32 提高效率 用scrapy创…

    Python 2023年10月1日
    038
  • flask程序使用celery

    写在开头 celery是一个分布式并行框架,适合一些并行任务。跟web程序结合可以实现web程序和业务代码的解耦合,celery是采用多进程方式进行的,所以能够有效利用多核CPU。…

    Python 2023年8月10日
    039
  • ViewBinding 与 Kotlin 委托双剑合璧

    请点赞关注,你的支持对我意义重大。🔥 Hi,我是小彭。本文已收录到GitHub · Android-NoteBook 中。这里有 Android 进阶成长知识体系,有志同道合的朋友…

    Python 2023年10月22日
    041
  • Python读取csv文件

    #导入pandas包并设置别名为pd import pandas as pd #读取csv格式文件并把格式设置为DataFrame格式 #值1是路径可以用绝对路径(cd盘内读取)也…

    Python 2023年8月19日
    038
  • python教程:函数快速入门

    def test(x): # x代表形参 ”’ 2*x+1 :param x:整形数字 :return:返回计算结果 ”’ y = 2*x+1 return y p = tes…

    Python 2023年11月2日
    040
  • java生成pdf417条形码_python生成417条形码(PDF417)详解

    –– encoding: utf-8 –– from elaphe.pdf417 import Pdf417 import os i…

    Python 2023年9月23日
    050
  • 观察者模式

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 弹尽粮绝,会员救园:…

    Python 2023年10月13日
    034
  • 关于Scrapy的那些事儿(一)Scrapy的运作流程

    代码写好,程序开始运行… 1 引擎:Hi!Spider, 你要处理哪一个网站? 2 Spider:老大要我处理xxxx.com。 3 引擎:你把第一个需要处理的URL给…

    Python 2023年10月2日
    038
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球