pytest 测试框架使用和实战

这篇具有很好参考价值的文章主要介绍了pytest 测试框架使用和实战。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、pytest测试框架概述

二、使用pytest测试框架的使用规范和使用格式

三、pytest案例 and 实战


一、pytest测试框架概述

        pytest是一个非常成熟的测试框架,pytest可以让不懂代码的人也可以使用pytest框架进行测试,且容易上手,对比其它框架也更为灵活,pytest可以结合一些python库来实现web自动化,接口自动化,app自动化测试。

        pytest的一些插件也很强大,可以实现很多实用的功能,例如:pytest-html可以生成html格式的自动化测试报告、pytest-xdist在执行测试用例时可以多线程的模式执行、pytest-ordering用于改变测试用例的执行顺序、pytest-rerunfailures在执行失败的用例可进行重新执行、allure-pytest可以生成美观的测试报告

二、使用pytest测试框架的使用规范和使用格式

1、pytest模块名必须以test_开头或者_test结尾,测试类必须以Test开头,并且不能有init方法,测试用例必须以test开头。

2、pytest用例的执行模式和参数:

        主函数模式

主函数模式
pytest.main() 执行所有

pytest.main(['-vs','路径'])

执行指定用例
pytest.main(['-sv', '执行的文件路径::class名::方法名']) 以nodeid的方式
pytest.main(['-sv', './多线程test/test_01.py', '-n=2']) 开启多线程
pytest.main(['-sv', '路径', '--reruns=[number]']) 执行失败的用例重跑
pytest.main(['-vs','路径','--maxfail=[number]']) 执行用例失败number条后停止
pytest.main(['-vs','路径','-k=str]) 只执行包含某个str的用例

        命令行模式

命令行模式
pytest 运行所有
pytest -vs 模块名 指定模块
pytest -vs 目录路径 指定目录
pytest -sv 执行的文件路径::class名::方法名 nodeid
pytest -vs 路径 -n number 开启多线程
pytest -vs 路径 --reruns number  执行失败的用例重跑
pytest -vs 路径 --maxfail number 执行用例失败number条后停止
pytest -vs 路径 -k "str" 只执行包含某个str的用例

        参数详解

参数详解
表示输出调试信息,包括print()打印的信息 -s
输出详细信息 -v
-vs
支持多线程或者分布式运行测试用例,开启number个线程 -n number
失败用例重跑number次 --reruns [number]
表示只要要一个用例报错,那么测试停止 -x
出现number个用例失败就停止 --maxfail number
只执行包含 str 的测试用例 -k str
生成html的测试报告 --html ./report/report.html

3、pytest.ini 配置文件

        pytest.ini文件可以对pytest进行初始化,是pytest单元测试的框架的核心配置文件,这个文件一般放在根目录下,文件名只能是pytest.ini,编码格式必须是ANSI,可以改变pytest的一些默认设置,在pytest每次执行时都会去读取这个文件。

        pytest.ini 文件的配置:

                [pytest]
                # 命令行参数,用空格分隔
                addopts = -vs
                # 测试用例文件夹,可自己配置, ../pytestproject为上一层的pytestproject文件夹
                testpaths = ../pytestporject
                # 配置测试搜索的模块文件名称
                python_files = test*.py
                # 配置测试搜索的测试类名
                python_classes = Test*
                #配置测试搜索的测试函数名
                python_functions = test

4、pytest的执行顺序是默认从上到下执行的,可以利用装饰器对用例的执行属性进行配置,用例的也可以进行分组操作,也是使用装饰器和修改pytest.ini文件中的值,用例在执行中也是可以跳过的,这些后面都会详细介绍。

三、pytest案例 and 实战

1、安装pytest

# 在dos窗口执行 
pip install pytest

2、新建一个测试用例

pytest实战,自学,python,pytest,单元测试,测试用例,html

        这里需要注意pytest模块、测试类和测试用例的格式,从执行结果来看,有1条用例通过了用了0.03S,还有我们使用的pytest的版本这里我使用的是主函数的执行方式,这里可以创建一个main函数使用起来会更加方便。

3、在终端执行pytest用例

# 在dos窗口输入并且是项目路径下
# 这里表示执行当前项目下的所有用例,-vs的参数用法请参考上面的参数详解
pytest -vs

pytest实战,自学,python,pytest,单元测试,测试用例,html

4、配置pytest.ini文件

[pytest]
# 命令行参数,用空格分隔
addopts = -vs
# 测试用例文件夹,可自己配置
testpaths = ../pytestproject
# 配置测试搜索的模块文件名称
python_files = test_*.py
# 配置测试搜索的测试类名
python_classes = Test*
#配置测试搜索的测试函数名
python_functions = test

        在项目的根目录下创建pytest.ini文件,并且输入以上内容,一旦创建了此文件后续执行用例会依靠pytest.ini中的配置来执行,并且每次执行用例时都会先回去此文件的配置。pytest.ini的配置是非常灵活的。

        addopts  表示在执行时的默认参数,当前的默认参数是 -vs

        testpaths 这是一个测试用例的路径,当你有不同的用例库时,就可以通过配置来指定不同的用例库

        python_files 用例模块的命名规则

        python_classes 用例类名的命名规则

        python_functions 用例方法名的命名规则

5、设置测试用例的执行顺序

        设置测试用例执行顺序使用python中的装饰器就可以,在测试用例的上方输入以下内容


import pytest


class TestLogin:

    # order的值表示这用例执行的顺序
    @pytest.mark.run(order=6)
    def test01(self):
        print('1hello pytest!')

    @pytest.mark.run(order=5)
    def test02(self):
        print('2hello pytest!')

    @pytest.mark.run(order=4)
    def test03(self):
        print('3hello pytest!')

    @pytest.mark.run(order=3)
    def test04(self):
        print('4hello pytest!')

    @pytest.mark.run(order=2)
    def test05(self):
        print('5hello pytest!')

    @pytest.mark.run(order=1)
    def test06(self):
        print('6hello pytest!')


if __name__ == '__main__':
    pytest.main()

        执行效果可以看出 '6hello pytest' 是第一个执行的,'1hello pytest' 是第6个执行的

pytest实战,自学,python,pytest,单元测试,测试用例,html

6、测试用例的分组

        测试用例的分组需要满足两个条件,一要在pytest.ini文件中对markers进行设置,二要在测试用例上使用@pytest.mark.装饰器

# 在 pytest.ini 文件中的配置
[pytest]
addopts = -vs
testpaths = ./OneDayPytest
python_files = test_*.py
python_classes = Test*
python_functions = test
markers =
    UI : ui测试用例分组
    function : 功能测试用例分组

配置网markers属性后添加装饰器

import pytest


class TestLogin:
    @pytest.mark.UI()
    @pytest.mark.run(order=6)
    def test01(self):
        print('ui测试用例分组——1')

    @pytest.mark.UI()
    @pytest.mark.run(order=5)
    def test02(self):
        print('ui测试用例分组——2')

    @pytest.mark.UI()
    @pytest.mark.run(order=4)
    def test03(self):
        print('ui测试用例分组——3')

    @pytest.mark.function
    @pytest.mark.run(order=3)
    def test04(self):
        print('功能测试用例分组——1')

    @pytest.mark.function
    @pytest.mark.run(order=2)
    def test05(self):
        print('功能测试用例分组——2')

    @pytest.mark.function
    @pytest.mark.run(order=1)
    def test06(self):
        print('功能测试用例分组——3')


if __name__ == '__main__':
    pytest.main()

执行UI分组的测试用例

pytest -vs -m "UI"
# 分组也可以使用 or
pytest -vs -m "UI and function"
# 表示UI分组和function分组都执行

运行结果,只执行了有UI分组修饰的用例

pytest实战,自学,python,pytest,单元测试,测试用例,html

7、跳过某个测试用例

跳过用例分两种,一种是无判断自己跳过一种是判断条件为真跳过:

无条件跳过 : @pytest.mark.skip(reason="跳过原因")

判断为真跳过 : @pytest.mark.skipif(boolean条件,reason="跳过原因")文章来源地址https://www.toymoban.com/news/detail-628773.html

到了这里,关于pytest 测试框架使用和实战的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 测试框架pytest教程(2)-用例依赖库-pytest-dependency

    对于 pytest 的用例依赖管理,可以使用  pytest-dependency  插件。该插件提供了更多的依赖管理功能,使你能够更灵活地定义和控制测试用例之间的依赖关系。 Using pytest-dependency — pytest-dependency 0.5.1 documentation 安装 pytest-dependency 插件: 依赖方法和被依赖方法都需要使用装饰器

    2024年02月11日
    浏览(25)
  • python+pytest接口自动化(12)-自动化用例编写思路 (使用pytest编写一个测试脚本)

    经过之前的学习铺垫,我们尝试着利用pytest框架编写一条接口自动化测试用例,来厘清接口自动化用例编写的思路。 我们在百度搜索 天气查询 ,会出现如下图所示结果: 接下来,我们以该天气查询接口为例,编写接口测试用例脚本。 针对某个功能做接口测试,首先我们需

    2024年02月04日
    浏览(45)
  • pytest笔记: pytest单元测试框架

    pycharm settings 查看  test_sample.py  后面带了个“.” 表示通过 如果不符合预期显示结果如下 D:softwarepython3anconda3Scripts 重启pycharm 后输入pytest

    2024年02月10日
    浏览(21)
  • Pytest自动化测试框架---(单元测试框架)

    unittest是python自带的单元测试框架,它封装好了一些校验返回的结果方法和一些用例执行前的初始化操作,使得单元测试易于开展,因为它的易用性,很多同学也拿它来做功能测试和接口测试,只需简单开发一些功能(报告,初始化webdriver,或者http请求方法)便可实现。 但自

    2024年02月14日
    浏览(47)
  • Python 面试:单元测试unit testing & 使用pytest

    calc.py test_calc.py employee.py test_employee.py 输出为: setupClass setUp test_apply_raise tearDown .setUp test_email tearDown .setUp test_fullname tearDown .teardownClass Ran 3 tests in 0.001s OK employee.py test_employee.py 输出为: setupClass setUp test_apply_raise tearDown .setUp test_email tearDown .setUp test_fullname tearDown .setUp tearDown

    2024年02月10日
    浏览(35)
  • Python+Appium+Pytest+Allure实战APP自动化测试框架

    Hi,大家好。今天我们来聊聊Python+Appium+Pytest+Allure实战APP自动化测试,pytest只是单独的一个单元测试框架,要完成app测试自动化需要把pytest和appium进行整合,同时利用allure完成测试报告的产出。 编写常规的 线性 脚本具体的步骤如下: 1、设计待测试APP的 自动化测试 用例 2、

    2023年04月09日
    浏览(43)
  • 测试框架pytest教程(5)运行失败用例-rerun failed tests

    运行这个文件,2个失败,48个通过。 要运行上次失败的测试用例,可以使用 --lf (或 --last-failed )选项来告诉pytest只运行上次运行时失败的测试。 命令行示例: 或者在pytest配置文件(比如pytest.ini)中设置: 这样,pytest会检测上次运行时失败的测试用例,并只运行这些失败

    2024年02月11日
    浏览(30)
  • APP自动化测试-Python+Appium+Pytest+Allure框架实战封装(详细)

    pytest只是单独的一个单元测试框架,要完成app测试自动化需要把pytest和appium进行整合,同时利用allure完成测试报告的产出。 编写常规的线性脚本具体的步骤如下: 1、设计待测试APP的自动化测试用例 2、新建app测试项目 3、配置conftest.py文件等 4、编写整体app测试用例运行文件

    2024年02月14日
    浏览(39)
  • Pytest单元测试框架 —— Pytest+Allure+Jenkins的应用

    一、简介 pytest+allure+jenkins进行接口测试、生成测试报告、结合jenkins进行集成。 pytest是python的一种单元测试框架,与python自带的unittest测试框架类似,但是比unittest框架使用起来更简洁,效率更高 allure-pytest是python的一个第三方库。用于连接pytest和allure,使它们可以配合在一起

    2024年02月07日
    浏览(36)
  • pytest单元测试实战

    1、pytest 简介 pytest 是 python 的一种单元测试框架,与 python 自带的 unittest 测试框架类似,但是比 unittest 框架使用起来更简洁,效率更高。 根据 pytest 的官方网站介绍,它具有如下特点: 非常容易上手,入门简单,文档丰富,文档中有很多实例可以参考。 能够支持简单的单元

    2024年01月16日
    浏览(42)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包