pytest测试框架+allure超详细教程

目录
  • 1、测试识别和运行
  • 2、参数化
  • 3、测试报告美化-allure

1、测试识别和运行

文件识别:

  • 在给定的目录中,搜索所有test_.py或者_test.py文件

用例识别:

  • Test*类包含的所有test_*的方法(测试类不能有__init__方法)
  • 不在类中的所有test_*方法
  • pytest也能执行unit test写的用例和方法

运行方式
1、pycharm页面修改默认的测试运行方式
settings页面,输入pytest,修改Default test runner

2、右键执行python文件
3、命令行界面执行,点击pycharm下方的terminal,打开命令行界面,执行pytest 命令

4、pycharm代码边界界面,左侧单条用例运行按钮

5、主函数运行方式
在运行文件中编写主函数,主函数启动需要导入pytest包,不然找不到pytest方法

import pytest

class TestClass:
    def test_one(self):
        x = "this"
        assert "h" in x

    def test_two(self):
        x = "hello"
        assert hasattr(x, "check")

if __name__ == '__main__':
#    pytest.main()
    pytest.main("test_study.py")

pytest.main()会自动读取当前目录下的所有test开头的.py文件,运行test方法或者类

可以传入不同的参数,让运行更加定制化

pytest.main(['./'])               # 运行./目录下所有(test_*.py  和 *_test.py)
pytest.main (['./subpath1'])    # 运行./subpath1 目录下用例
pytest.main (['./subpath1/test_module1.py'])    # 运行指定模块
pytest.main (['./subpath1/test_module1.py::test_m1_1'])  # 运行模块中的指定用例
pytest.main (['./subpath2/test_module2.py::TestM2::test_m2_02'])  # 运行类中的指定用例
pytest.main (['-k','pp'])         # 匹配包含pp的用例(匹配目录名、模块名、类名、用例名)
pytest.main(['-k','spec','./subpath1/test_module1.py'])     # 匹配test_module1.py模块下包含spec的用例
pytest.main(['-k','pp','./subpath2/test_module2.py::TestM2'])   # 匹配TestM2类中包含pp的用例

2、参数化

@pytest.mark.parametrize(argnames,argvalues)

  • argnames:要参数化的变量,可以是string(用逗号分割),list,tuple
  • argvalues:参数化的值,list[tuple],以列表形式传入元组,每个元组都是一条测试数据
  • ids,:默认为none,用来重新定义测试用例的名称
# 使用string分割参数化的变量
@pytest.mark.parametrize('a,b',[(10,20),(30,40)])
def test_param(a, b):
	print(a,b)

# 使用list分割参数化的变量
@pytest.mark.parametrize(['a', 'b'],[(10,20),(30,40)])
def test_param(a, b):
	print(a,b)

# 使用tuple分割参数化的变量
@pytest.mark.parametrize(('a', 'b'),[(10,20),(30,40)])
def test_param(a, b):
	print(a,b)

# 使用ids重新定义用例名称
@pytest.mark.parametrize('a,b',[(10,20),(30,40)], ids=['case1', 'case2'])
def test_param(a, b):
	print(a,b)

yaml参数化
pip install PyYAML
yaml实现list

- 10
- 20
- 30

yaml实现字典

by: id
locator: name
action: click

yaml二维数组

companies:
  - id: 1
    name: company1
    price: 200w
  - id: 2
    name: company2
    price: 500w
fruites:
  - name: 苹果
    price: 8.6
  - name: 香蕉
    price: 2.6

读取yaml文件
yaml.safe_load(open(‘./data.yaml’))

3、测试报告美化-allure

1、操作系统内部先安装allure
2、安装allure-pytest插件

pip install allure-pytest

3、运行测试用例
查看pytest中allure相关的命令行参数

C:\Users\Administrator>pytest --help | findstr allure  <== linux 使用grep过滤
  --allure-severities=SEVERITIES_SET     <==  根据用例级别过滤需要执行的用例
  --allure-epics=EPICS_SET
  --allure-features=FEATURES_SET         <== 根据用例设置的feature名称过滤需要执行的用例
  --allure-stories=STORIES_SET           <== 根据用例设置的story名称过滤需要执行的用例
  --allure-ids=IDS_SET  Comma-separated list of IDs.
  --allure-link-pattern=LINK_TYPE:LINK_PATTERN
  --alluredir=DIR       <== 指定存放用例执行结果的目录
  --clean-alluredir     清除alluredir文件夹(如果存在)
  --allure-no-capture   Do not attach pytest captured logging/stdout/stderr to

4、执行测试命令

# --alluredir: 用于指定存储测试结果的路径
pytest [测试文件] -vs --alluredir=./result/ --clean-alluredir

5、查看测试报告

在线查看报告,直接打开默认浏览器展示当前报告

# 注意这里的serve书写,后面接用例执行结果(./result/:就是存放执行结果的目录路径)
allure serve ./result/

从结果生成报告
1.生成报告

# 注意:覆盖路径加--clean
allure generate ./result/ -o ./report/ --clean

2.打开报告

allure open -h 127.0.0.1 -p 8883 ./report/

allure常用特性
支持在报告中查看测试功能、子功能或场景、测试步骤和测试附加信息等,可以通过@feature、@story、@step和@attach等装饰器实现

实现的步骤

  • import allure
  • 功能上加@allure.feature(“功能名称”)
  • 子功能上加@allure.story(“子功能名称”)
  • 用例标题@allure.title(“用例名称”)
  • 用例描述@allure.description(“用例描述”)
  • 步骤上加@allure.step(“步骤细节”)
  • @allure.attach(“具体文本信息”),需要附加的信息,可以是数据、文本、图片、视频和网页
  • 用例级别@allure.severity(级别)
  • 如果只测试登录功能运行的时候,可以加限制过滤
# 注意这里--allure-features中间是-中线, 需要使用双引号
#  不能过滤--allure-features下的--allure-stories
pytest 文件名 --allure-features="登录模块"
  • feature相当于一个功能,一个大模块,将case分类到某个feature中,报告中Behaviors(功能中展示),相当于testsuite
  • story相当于这个功能或者模块下的不能场景,分支功能,属于feature之下的结构,报告中features中展示,详单与tescase
  • feature与story类似于父子关系
  • 2、allure特性-step
  • 测试过程中每个步骤,一般放在具体逻辑方法中
  • 可以放在关步骤中,在报告中显示
  • 在app、web自动化测试中,建议每切换到一个新页面就做一个step
  • 用法:
  • @allure.step():只能以装饰器的形式放在类或者方法上面
  • with allure.step():可以放在测试用例方法里面,但是测试步骤代码需要被该语句包含

3、allure特性-testcase

关联测试用例,可以直接给测试用例的地址链接,一般用于关联手工测试用例
实力代码:

import pytest
import allure

@allure.feature('用户登录')
class TestLogin:

	@allure.story('登录成功')
	def test_login_success(self):
		with allure.step('步骤1:打开应用'):
			print('打开应用')
		with allure.step('步骤2:进入登录页面'):
			print('进入登录页面')
		with allure.step('步骤3:输入用户名和密码'):
			print('输入用户名和密码')
		print('这是登录成功测试用例')

	@allure.story('登录失败')
	def test_login_fail(self):
		print('这是登录失败测试用例')

	@allure.story('登录失败')
	@allure.title('用户名缺失')
	def test_login_fail_a(self):
		print('这是登录失败测试用例')

	@allure.story('登录失败')
	@allure.testcase('https://www.baidu.com/', '关联测试用例地址')
	@allure.title('密码缺失')
	@allure.description('这是一个用例描述信息')
	def test_login_fail_b(self):
		with allure.step('点击用户名'):
			print('输入用户名')
		with allure.step('点击密码'):
			print('输入密码')
		print('点击登录')
		with allure.step('点击登录之后登录失败'):
			assert '1' == 1

按重要性级别 进行一定范围测试
通常测试用PO、冒烟测试、验证上线测试。按照重要性级别来分别执行
缺陷严重级别

1. Blocker级别——中断缺陷
    客户端程序无响应,无法执行下一步操作。
2. Critical级别――临界缺陷,包括:
    功能点缺失,客户端爆页。
3. Major级别——较严重缺陷,包括:
    功能点没有满足需求。
4. Normal级别――普通缺陷,包括:
    1. 数值计算错误
    2. JavaScript错误。
5. Minor级别———次要缺陷,包括:
    1. 界面错误与UI需求不符。
    2. 打印内容、格式错误
    3. 程序不健壮,操作未给出明确提示。
6. Trivial级别——轻微缺陷,包括:
    1. 辅助说明描述不清楚
    2. 显示格式不规范,数字,日期等格式。
    3. 长时间操作未给用户进度提示
    4. 提示窗口文字未采用行业术语
    5. 可输入区域和只读区域没有明显的区分标志
    6. 必输项无提示,或者提示不规范。
7. Enhancement级别——测试建议、其他(非缺陷)
   1. 以客户角度的易用性测试建议。
   2. 通过测试挖掘出来的潜在需求。

解决方法:

  • 通过附加pytest.mark标记
  • 通过allure.feature,allure.story
  • 也可以通过allure.servity来附加标记

步骤:
在方法,函数和类上面加:@allure.severity(allure.severity_level.TRIVIAL)
执行时过滤:pytest -vs [文件名] --allure-severities normal, critical

前端自动化测试-截图
前端自动化测试经常需要附加图片或html,在适当的地方,适当时机截图
@allure.attach 实现不同类型附件,可以补充测试步骤或测试结果
使用方式:

  • 在测试报告附加网页
allure.attach(body(内容), name, attachment_type, extension)
allure.attach('<body>这是一段html</body>', 'html测试', attachment_type=allure.attachment_type.HTML)

在测试报告附加图片

allure.attach.file(source, name, attachment_type, extension)
allure.attach.file('./123.jpg', name='这是一个图片', attachment_type=allure.attachment_type.JPG)

示例代码:

import allure

def test_attach_text():
	allure.attach('这是一个纯文本', attachment_type=allure.attachment_type.TEXT)

def test_attach_html():
	allure.attach('<body>这是一段html</body>', 'html测试', attachment_type=allure.attachment_type.HTML)

def test_attach_phote():
	allure.attach.file('./123.jpg', name='这是一个图片', attachment_type=allure.attachment_type.JPG)

def test_attach_video():
	allure.attach.file('./123.mp4',name='这是一个视频',attachment_type=allure.attachment_type.MP4)
import allure
from selenium import webdriver
import time
import pytest

@allure.testcase('https://www.baidu.com/', '百度搜索功能')
@pytest.mark.parametrize('data',
                         ['allure', 'pytest', 'unittest'],
                         ids=['search allure', 'search pytest', 'search unittest']
                         )
def test_search(data):
	with allure.step('步骤1:打开浏览器输入百度地址'):
		driver = webdriver.Chrome()
		driver.implicitly_wait(5)
		driver.get('https://www.baidu.com/')

	with allure.step(f'步骤2:在搜索框中输入{data}, 并点击百度一下'):
		driver.find_element_by_id('kw').send_keys(data)
		driver.find_element_by_id('su').click()
		time.sleep(2)

	with allure.step('步骤3: 截图保存到项目中'):
		driver.save_screenshot(f'./result/{data}.jpg')
		allure.attach.file(f'./result/{data}.jpg', name=f'搜索{data}的截图', attachment_type=allure.attachment_type.JPG)
		allure.attach(driver.page_source, f'搜索{data}的网页内容', allure.attachment_type.HTML)

	with allure.step('步骤4:关闭浏览器,退出'):
		driver.quit()

到此这篇关于pytest测试框架+allure超详细教程的文章就介绍到这了,更多相关pytest allure测试框架内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Pytest测试报告工具Allure用法介绍

    简介 Allure Framework是一种灵活的.轻量级.多语言测试报告工具. 不仅可以以简洁的网络报告形式非常简洁地显示已测试的内容, 而且还允许参与开发过程的每个人从日常执行中提取最大程度的有用信息和测试. 从开发/测试的角度来看: Allure报告可以快速查看到缺陷点,可以将测试未通过划分为Bug和中断的测试. 还可以配置日志,步骤,固件,附件,时间,历史记录,以及与TMS的集成和Bug跟踪系统,以便掌握所有信息. 从管理者的角度来看: Allure提供了一个清晰的全局,涵盖了所涵盖的功

  • Pytest allure 命令行参数的使用

    先看看 allure 命令的帮助文档 cmd 敲 allure -h allure 命令的语法格式 allure [options] [command] [command options] options 列表 Options: --help 命令行帮助文档 -q, --quiet 切换至安静模式 Default: false -v, --verbose 切换至冗长模式 Default: false --version 版本信息 Default: false command 列表 generat

  • Pytest+Request+Allure+Jenkins实现接口自动化

    利用Pytest+Request+Allure+Jenkins实现接口自动化: 实现一套脚本多套环境执行: 利用参数化数据驱动模式,实现接口与测试数据分离 使用logger定制实现自动化测试日志记录 实现步骤: 框架结构: 1.接口自动化项目代码编写(先在window实现) 1.1 项目准备 先在window安装响应的环境依赖 安装python3.7(要保证pip能用,一般安装python3.7会自动安装pip) 安装pytest框架---- pip install pytest 安装reque

  • 详解用Pytest+Allure生成漂亮的HTML图形化测试报告

    对于软件测试工作来说,测试报告是非常重要的工作产出.一个漂亮.清晰.格式规范.内容完整的测试报告,既能最大化我们的测试工作产出,又能够减少开发人员和测试人员的沟通成本. 本篇文章将介绍如何使用开源的测试报告生成框架Allure生成规范.格式统一.美观的测试报告. 通过这篇文章的介绍,你将能够: 将Allure与Pytest测试框架相结合: 如何定制化测试报告内容 执行测试之后,生成Allure格式的测试报告. 如何与Jenkins集成. 将测试环境信息展示到测试报告中. 1.Allure测试报告

  • 详解pytest+Allure搭建方法以及生成报告常用操作

    目录 一.Allure搭建 1.下载Allure安装包 2.安装allure-pytest库 3.配置allure环境变量 4.检验allure安装成功 二.allure生成报告代码 1.allure指定用例严重等级: 2.allure指定标记的测试用例执行 3.生成报告代码 一.Allure搭建 1.下载Allure安装包 链接:https://github.com/allure-framework/allure2/releases 2.安装allure-pytest库 cmd命令行输入命令:

  • pytest allure添加环境信息实例讲解

    目录 前言 properties文件 xml文件 前言 本篇来学习下在allure中如何添加环境信息 properties文件 在allure的report根目录下添加一个 environment.properties 文件,allure报告就会显示在报告中 Author=DHNativePlace=LiaoningCity=BeijingAge=28Professional=Test EngineerBlog=https://www.jb51.net/ 编写case # -*- coding:

  • Pytest+request+Allure实现接口自动化框架

    目录 前言: 一.简单介绍 二.代码结构与框架流程 三.详细功能和使用说明 四.Allure报告及Email 五.后续优化 前言: 接口自动化是指模拟程序接口层面的自动化,由于接口不易变更,维护成本更小,所以深受各大公司的喜爱. 接口自动化包含2个部分,功能性的接口自动化测试和并发接口自动化测试. 本次文章着重介绍第一种,功能性的接口自动化框架. 一.简单介绍 环境:Mac.Python 3,Pytest,Allure,Request pytest==3.6.0 pytest-allure-ad

  • Pytest测试报告工具Allure的高级用法

    Allure除了具有Pytest基本状态外,其他几乎所有功能也都支持. 1.严重性 如果你想对测试用例进行严重等级划分,可以使用@allure.severity装饰器,它可以应用于函数,方法或整个类. 它以allure.severity_level枚举值作为参数,分别为:BLOCKER(中断),CRITICAL(严重),NORMAL(常规),MINOR(轻微),TRIVIAL(不重要). 示例: # test_sample.py import allure # 两数相加 def add(x, y

  • pytest测试框架+allure超详细教程

    目录 1.测试识别和运行 2.参数化 3.测试报告美化-allure 1.测试识别和运行 文件识别: 在给定的目录中,搜索所有test_.py或者_test.py文件 用例识别: Test*类包含的所有test_*的方法(测试类不能有__init__方法) 不在类中的所有test_*方法 pytest也能执行unit test写的用例和方法 运行方式1.pycharm页面修改默认的测试运行方式settings页面,输入pytest,修改Default test runner 2.右键执行pyth

  • idea搭建ssh框架的超详细教程

    目录 一.创建项目 1.new->project出现如下 2.构建目录结构 二.Struts2 1.首先引入struts2依赖 2.WEB-INF下web.xml文件配置 3.在resources下添加struts.xml文件 4.在action包下创建TestAction类,为了测试在webapp下新建了test.jsp页面 5.部署 6.启动测试 三.Spring 1.首先引入spring相关依赖 2.在web.xml中添加listener,并在resources下新建spring,xml文

  • 使用JAVA+Maven+TestNG框架实现超详细Appium测试安卓真机教程

    前言:前段时间做了selenium的学习和实践,有点意犹未尽,所以自己就又学了下Appium的使用,因为这一套东西在16年已经停止维护了,不管实现还是设计上都不是很容易,也踩了很多坑,现在在此记录下大概过程.后续有时间再完善手册. 一.准备 安装SDK,配置环境变量 链接: https://pan.baidu.com/s/1g2QaWjdfg6Txa0gZf9kk3A 提取码: 8aaz windows配置环境SDK变量 我的电脑右键->属性 点击高级系统设置 点击环境变量 点击新建按钮,变量名

  • scrapy+scrapyd+gerapy 爬虫调度框架超详细教程

    目录 一.scrapy 1.1 概述 1.2 构成 1.3 安装和使用 二.scrapyd 2.1 简介 2.2 安装和使用 三.gerapy 3.1 简介 3.2 安装使用 四.scrapy+scrapyd+gerapy的结合使用 4.1 创建scrapy项目 4.2 部署打包scrapy项目 4.3 运行 五.填坑 5.1 运行scrapy爬虫报错 5.2 scrapyd 运行 scrapy 报错 一.scrapy 1.1 概述 Scrapy,Python开发的一个快速.高层次的屏幕抓取和w

  • 使用Docker+jenkins+python3环境搭建超详细教程

    前言: 自动化写好后需要在服务器上每日定时运行遇到,这样的一个问题,Jenkins容器是在docker中安装的 ,然后从git上拉取代码 发现代码在jenkins容器的目录当中,运行的时候提示没有安装python环境还第三方库. 解决方法有3种: 第一种:启动jenkins容器时 将容器的目录挂载到宿主机目录上去执行(方法不能实现)Pass 第二种:在jenkins上创建本地节点,将代码拉取到本地 然后去运行本地项目(在本机上使用比较方便,但是局限性比较小) 第三种:重新封装jenkins镜像,

  • SpringBoot整合MyBatis超详细教程

    1.整合MyBatis操作 前面一篇提到了SpringBoot整合基础的数据源JDBC.Druid操作,实际项目中更常用的还是MyBatis框架,而SpringBoot整合MyBatis进行CRUD也非常方便. 下面从配置模式.注解模式.混合模式三个方面进行说明MyBatis与SpringBoot的整合. 1.1.配置模式 MyBatis配置模式是指使用mybatis配置文件的方式与SpringBoot进行整合,相对应的就有mybatis-config.xml(用于配置驼峰命名,也可以省略这个文

  • Springboot启动扩展点超详细教程小结

    1.背景 Spring的核心思想就是容器,当容器refresh的时候,外部看上去风平浪静,其实内部则是一片惊涛骇浪,汪洋一片.Springboot更是封装了Spring,遵循约定大于配置,加上自动装配的机制.很多时候我们只要引用了一个依赖,几乎是零配置就能完成一个功能的装配. 我非常喜欢这种自动装配的机制,所以在自己开发中间件和公共依赖工具的时候也会用到这个特性.让使用者以最小的代价接入.想要把自动装配玩的转,就必须要了解spring对于bean的构造生命周期以及各个扩展接口.当然了解了bean

  • Windows下PyCharm配置Anaconda环境(超详细教程)

    首先来明确一下Python.PyCharm和Anaconda的关系 1.Python是一种解释型.面向对象.动态数据类型的高级程序设计语言. 虽然Python3.5自带了一个解释器IDLE用来执行.py脚本,但是却不利于我们书写调试大量的代码.常见的是用Notepade++写完脚本,再用idle来执行,但却不便于调试.这时候就出现了PyCharm等IDE,来帮助我们调试开发. 2.PyCharm是一种Python IDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调

  • VMware Workstation安装并安装WIN10操作系统连接外网步骤指导(超详细教程)

    首先下载VMware Workstation15.1版本,我保存在迅雷链接里面,下载速度非常可观. 链接: https://pan.baidu.com/s/1_orx0T1hDpadaBznwWzW1A 提取码: 6grf 安装步骤: 双击打开,傻瓜式安装一直点击下一步下一步即可.当然安装过程中会让我们选择安装的软件夹,可自行选择要安装的软件夹位置. 当我们安装完成之后学选择输入许可证,许可证就可以理解为一个激活码一样的东西. 这里有一个此版本的许可证,大家按照这个许可证输入进去并选择完成就ok

  • mysql8.0.23 linux(centos7)安装完整超详细教程

    上篇文章给大家介绍了MySQL 8.0.23 主要更新一览(新特征解读) ,感兴趣的朋友点击查看吧! 最新版windows mysql-8.0.23-winx64,点击下载 mysql8.0.23 linux(centos7)安装教程(附:配置外网连接用户授权 与 不区分大小写配置) (博主在这里叨叨几句,稍后进入正题.在使用开发过程中,有时候数据库结合使用,会成倍提高程序效率) 什么是关系型数据库? 常见的关系型数据库: (其实博主也只使用过 MySQL Oracle sqlServer) O

随机推荐