pytest(一):基础功能(执行用例、allure报告、数据驱动)

这篇具有很好参考价值的文章主要介绍了pytest(一):基础功能(执行用例、allure报告、数据驱动)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

pytest是python语言中一款强大的单元测试框架,用来管理和组织测试用例,可应用在单元测试、自动化测试工作中。  官网:(https://docs.pytest.org/en/7.2.x/)

文章主要以unittest为参考分析pytest

pytest主要作用是编写测试用例、收集用例、执行用例、生成测试结果文件(html、xml)

unittest: 模板化 不需要安装

1.基于python的单元测试框架,它可以和selenium,requests,appium结合实现自动化
测试。
2.实现用例跳过skip和reruns失败用例重跑。
3.它可以结合allure-pytest插件生成allure报告。
4.很方便和jenkins实现持续集成。
5.有很多强大的插件:
pytest-html 生成html测试报告。
pytest-xdist 多线程执行测试用例。
pytest-ordering 改变测试用例的执行顺序。
pytest-rerunfailures 失败用例重跑
allure-pytest 生成allure报告。
pip install pytest

一 编写用例

unittest: 继承unittest.TestCase类,用例名要以test_开头。

pytest: 函数的形式、类的形式。用例名要以test_开头或者_test结尾。测试类要以Test开头。

二 收集和执行用例:

unittest: 用例收集(TestSuite/TestLoader)到TestSuite, TestRunner去执行用例。

pytest: 自动收集用例,再去执行。

2.1 pycharm设置 以pytest方式执行用例

pycharm默认是以unittest方式执行测试用例

修改方式:File--Settings--Tools--Python Intergrated Tools 将Testing 中 Default test runner改成pytest

 pytest的作用,# pytest,pytest,单元测试pytest的作用,# pytest,pytest,单元测试pytest的作用,# pytest,pytest,单元测试pytest的作用,# pytest,pytest,单元测试

2.2 pytest自动收集用例的规则

1)确定搜索目录:

从哪个目录开始搜索用例?

-- pytest命令在哪个目录下执行,就以哪个目录为rootdir

-- 新建main.py,在文件当中使用pytest.main() - 与在命令行当中执行pytest是一样的。

2)过滤测试文件:

 --测试文件名:test*.py 或者 *test.py

3)过滤测试用例:文件当中,如何过滤测试用例?

-- 测试用例名:test_开头 测试类名:Test开头。

4)  pytest收集到的用例执行顺序

 先找到测试文件,再找测试文件当中的用例。

测试文件顺序:ASCII码

测试文件内部顺序:代码先后顺序

5) 通过插件pytest-ordering改变用例执行顺序

pytest的作用,# pytest,pytest,单元测试

 @pytest.mark.run(order=1)

注意:有order装饰器的优先,相同的order标记序号从上到下,然后是没有装饰器的,从上到下.负数不起作用.

2.3 pytest运行方式

1.主函数方式。

import pytest
#1
if __name__ == '__main__':
pytest.main()
常见参数:
-v:输出更加详细的信息。比如文件和用例名称等。
-s:输出调试信息。打印信息等。
可以合并成:-vs
--reruns 数字:失败重跑
-x:出现1个失败就停止测试。
--maxfail=2 出现N个失败就终止测试。
--html=report.html 生成html的测试报告
-n:多线程。
-k:运行测试用例名称中包含指定字符串的用例。
#2.指定模块运行。
 if __name__ == '__main__':
 pytest.main(['‐vs','testcases/test_api2.py'])
#3.指定文件夹
if __name__ == '__main__':
 pytest.main(['‐vs','testcases/'])
#4.通过node id的方式运行测试用例。
if __name__ == '__main__':
 pytest.main(['‐vs','testcases/test_api.py::TestApi::test_product_manage'])

2.命令行方式

pytest

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

(不管是命令行还是主函数都会读取这个配置文件)

[pytest]
用于标记这个文件是pytest的配置文件
addopts = -vs
命令行参数,多个参数之间用空格分隔。
addoptions
testpaths = testcases/ 配置搜索测试用例的范围
python_files = test_*.py 改变默认的文件搜索规则
python_classes = Test* 改变默认的类搜索规则
python_functions = test_* 改变默认的测试用例的搜索规则。
#用例分组
markers =
smoke:冒烟用例
productmanage:商品管理模块
特别提示:
此文件中最好不要出现中文,
如果有中文的情况下,比如使用notpad++改成GBK的编码

2.4 跳过用例

@pytest.mark.skip

1)直接跳过

#无条件跳过
 @pytest.mark.skip(reason="不需要")
 @pytest.mark.smoke
def test_mk(self):
print("mk")

2)有条件跳过

 @pytest.mark.skipif(age>2,reason="以后的版本都不执行")
@pytest.mark.smoke
def test_aaa(self):print("aaa")

三 生成测试结果文件:

unittest: text,html(HtmlTestRunner,beautifulReport)

pytest主要介绍四种

3.1. 生成JunitXML 格式的测试报告:

命令:--junitxml=path

3.2. 生成result log格式的测试报告:

命令:--resultlog=report\log.txt

3.3. 生成Html格式的测试报告:

命令:--html=report\test_one_func.html(相对于rootdir路径 )

第一步:安装pytest html插件 pip install pytest-html

第二步:在pytest的命令行参数中:--html=....

3.4生成allure的测试文件(unittest不支持,主要介绍)

3.4.1allure介绍及安装

官网:https://qameta.io/allure-report/

allure依据测试结果文件,呈现更好看的更多维度的测试报告。
注意:它不执行用例也不生成测试结果文件。所以,要使用allure的时候,一定要先生成测试结果文件。 要结合其它的测试框架一起使用的

1) 安装allure命令行工具

下载地址:https://repo.maven.apache.org/maven2/io/qameta/allure/allure-commandline/

下载以后解压,然后配置环境变量

我的解压位置是 D:\pycharm\allure-2.20.1\   配置环境变量:allure的bin目录D:\pycharm\allure-2.20.1\ binpytest的作用,# pytest,pytest,单元测试

  在cmd当中,执行allure命令查看是否安装成功pytest的作用,# pytest,pytest,单元测试

 2)安装allure-pytest插件

#安装插件:
pip install allure-pytest

 3)配置生成allure可以识别的测试文件的路径

pytest在执行用例之后,要生成allure可以识别的测试结果文件

在pytest.main()的参数当中添加:--alluredir=xx/xxx (相对于rootdir路径)

pytest的作用,# pytest,pytest,单元测试

 4)allure去解析2中的测试结果文件

使用allure去解析测试结果文件,再呈现最终的测试报告
在cmd当中首先跳转到rootdir下在cmd当中执行命令:allure serve 中的测试结果文件路径

 或者在main函数直接添加allure serve 测试文件

写的一个demo

test_01

# @File    : test_01.py
import pytest
def test_01():
    assert 1==1
    print('hello')

def test_02():
    print("demo02")
    assert 1+1 >2

def test_03():
    print("demo03")

main

# @File    : main.py
import os
import pytest

if __name__ == '__main__':

    pytest.main(["-s", "-v",
             "--alluredir=allure_files"])
    os.system("allure serve allure_files")

 执行结果如下pytest的作用,# pytest,pytest,单元测试

四 数据驱动:

unittest: ddt模块

pytest 使用@pytest.mark.parametrize装饰器来实现数据驱动测试

4.1单个数据

import pytest
data = ["get", "post"]
@pytest.mark.parametrize("name",data)
def test_demo(name):
    print("测试数据为{}".format(name))

pytest的作用,# pytest,pytest,单元测试

 4.2组数据

列表嵌套字典

import  pytest

datas=[
    {"method":"get","code":"200"},
    {"method":"post","code":"201"},
    {"method":"put","code":"301"},
    {"method":"delete","code":"204"}
]

@pytest.mark.parametrize("case",datas)

def test_read_cases01(case):
    print(case["method"],case["code"])
    print("=======================")

pytest的作用,# pytest,pytest,单元测试

 02 列表嵌套列表

import pytest
data_1 = [
    ["admin1", "123456"],
    ["admin2", "12345678"],
]
@pytest.mark.parametrize("username,password", data_1)
def test_login(username,password):
    print("账号:{},密码:{}".format(username, password))

pytest的作用,# pytest,pytest,单元测试

03 列表嵌套元组

import pytest
data_1 = [
    ("admin1", "123456"),
    ("admin2", "12345678"),
]
@pytest.mark.parametrize("username,password", data_1)
def test_login(username,password):
    print("账号:{},密码:{}".format(username, password))

pytest的作用,# pytest,pytest,单元测试文章来源地址https://www.toymoban.com/news/detail-655542.html

到了这里,关于pytest(一):基础功能(执行用例、allure报告、数据驱动)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Pytest-Allure测试报告

    此处我选择下载最新的,版本上可以选择不是最新的,2.9.0的。下载zip或者tgz后缀格式的都可以。 找到解压缩后的包》》》找到环境变量》》》找到系统环境变量》》》找到Path》》》把allure的bin目录添加进去 allure需要依赖JDK,所以,电脑需要先配置好JDK环境。 首先,配置文

    2024年02月09日
    浏览(33)
  • pytest-allure 生成测试报告

    目录 前言: pytest 中 yield 和 return 的区别和相同点 共同点 区别 usefixtures 与传 fixture 区别 Pytest 常用的插件 一键安装多个模块 前言: 在软件测试中,生成清晰、易读的测试报告是非常重要的。pytest-allure是一个流行的测试框架和报告生成工具,它可以帮助测试团队生成美观、

    2024年02月16日
    浏览(22)
  • Pytest教程__定制allure报告(12)

    定制报告需要先导入allure模块,再使用以下装饰器方法: feature: 标注主要功能模块。 story: 标注feature功能模块下的分支功能。 description:在报告中显示用例描述。 step: 标注测试用例步骤。 issue testcase:标注用例关联的链接。 attach: 添加一些附加内容到测试报告中。 severity

    2024年02月09日
    浏览(33)
  • Pytest自动化测试框架之Allure报告

    Allure Framework是一种灵活的、轻量级、多语言测试报告工具。 不仅可以以简洁的网络报告形式非常简洁地显示已测试的内容, 而且还允许参与开发过程的每个人从日常执行中提取最大程度的有用信息和测试。 从开发/测试的角度来看: Allure报告可以快速查看到缺陷点,可以将

    2024年02月06日
    浏览(45)
  • 【Pytest】Allure测试报告的安装与环境配置

    Allure基于Java开发,因此需要提前安装Java 8 或以上版本的环境。 jdk下载地址:http://www.codebaoku.com/jdk/jdk-oracle-jdk1-8.html 选择jdk8,下载完成: 双击进行安装,安装过程中注意记住选择的路径(有一个jdk包和一个jre包的保存路径选择,我更改了路径分别到D:javaJDK和D:javaJRE)。

    2024年02月16日
    浏览(32)
  • 接口自动化测试框架(pytest+allure+aiohttp+ 用例自动生成)

    近期准备优先做接口测试的覆盖,为此需要开发一个测试框架,经过思考,这次依然想做点儿不一样的东西。 接口测试是比较讲究效率的,测试人员会希望很快能得到结果反馈,然而接口的数量一般都很多,而且会越来越多,所以提高执行效率很有必要 接口测试的用例其实

    2024年02月07日
    浏览(45)
  • 使用Pytest集成Allure生成漂亮的图形测试报告

    目录 前言 依赖包安装 Pytest Allure Pytest Adaptor 改造基于Pytest的测试用例 生成测试报告 运行测试 生成测试报告 打开测试报告  资料获取方法 之前写过一篇生成测试报告的博客,但是其实Allure首先是一个可以独立运行的测试报告生成框架,然后才有了Jenkins的集成插件。 这一次

    2024年02月13日
    浏览(22)
  • 接口自动化测试框架开发(pytest+allure+aiohttp+ 用例自动生成)

    近期准备优先做接口测试的覆盖,为此需要开发一个测试框架,经过思考,这次依然想做点儿不一样的东西。 接口测试是比较讲究效率的,测试人员会希望很快能得到结果反馈,然而接口的数量一般都很多,而且会越来越多,所以提高执行效率很有必要 接口测试的用例其实

    2024年01月23日
    浏览(39)
  • 接口自动化测试框架开发 (pytest+allure+aiohttp+ 用例自动生成)

    目录 前言: 第一部分(整个过程都要求是异步非阻塞的) 读取 yaml 测试用例 http 请求测试接口 收集测试数据 第二部分 动态生成 pytest 认可的测试用例 后续(yml 测试文件自动生成) 前言: 开发一个接口自动化测试框架是一个很好的方式,可以提高测试效率和准确性。在这

    2024年02月16日
    浏览(46)
  • 软件测试/测试开发丨Pytest和Allure报告 学习笔记

    本文为霍格沃兹测试开发学社学员学习笔记分享 原文链接:https://ceshiren.com/t/topic/26755 类型 规则 文件 test_开头 或者 _test 结尾 类 Test 开头 方法/函数 test_开头 注意:测试类中不可以添加 __init__ 构造函数 注意:pytest对于测试包的命名没有要求 方法:类中定义的函数 函数:类

    2024年02月10日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包