首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

一个测试API的pytest框架

现在,我们将创建一个小的pytest框架来测试API。这里使用的API是https://reqres.in/的免费API 。该网站仅提供可测试的API。该网站不存储我们的数据。...在这里,我们将为 列出一些用户 与用户登录 使用给定的代码创建以下文件 conftest.py-有一个fixture,可以为所有测试方法提供基本网址 导入pytest @ pytest.fixture...测试有效的用户访存并验证响应 test_list_invaliduser测试无效的用户访存并验证响应 import pytest import requests import json @pytest.mark.parametrize.../50" resp = requests.get(url) assert resp.status_code == 404, resp.text test_login_user.py –包含用于测试登录功能的测试方法...test_login_valid使用电子邮件和密码测试有效的登录尝试 test_login_no_password在不通过密码的情况下测试无效的登录尝试 test_login_no_email测试无效的登录尝试

1.4K31

pytest测试框架系列(5)-常用的pytest插件

接着上一篇pytest测试框架的分享 这次主要分享的是pytest常用的插件,用好这些插件,对我们做自动化测试会起很好的作用。...3次,第三次才标记失败 pytest -v -s test_failures.py --reruns 2 二、改变测试用例执行顺序 pytest的测试用例执行顺序是按照assii大小进行执行的,...但是有时候我们需要改变执行顺序才能符合我们的预期,我们可以通过pytest-ordering插件来更改执行顺序 pip install pytest-ordering 示例代码 #!...用例比较多的时候,按顺序执行测试用例花费的时间比较长,我们可以并发执行测试用例,并发执行的插件有两个比较常用的 pytest-parallel pytest-xdist pytest-parallel...3个线程 pytest-xdist pip install pytest-xdist #运行的命令 pytest -n x x是线程数 四、测试报告插件 pytest-html是pytest常用的一个测试报告插件

62420
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    07 Pytest的测试报告

    4.0移除) url格式的报告文件,为每个用例或指定用例生成一个url:pytest --pastebin=all,只输出失败的,可以将all换为failed 第三方插件:pytest-html Pytest...测试报告示例 1、JunitXML格式的测试报告 JunitXML格式的报告是在pytest命令后加上--junitxml=path。...运行测试集中的用例:pytest -q --tb=no --junitxml='E:\python_interface_test\results\makejunitstyle.xml' --tb=no是不输出...格式的报告是将测试结果发送给pastebin服务器,在用例执行完成后,生成一个url地址 运行命令:pytest --pastebin=all,如果只想看失败的信息把all换成failed url.png...查看结果:输出信息和控制台中的traceback一样,只是保存在了服务器上,看起来还是比较乱 urlreport.png 4、pytest-html第三方插件生成的测试报告 秉持拿来主义的精神

    1.4K60

    PyTest运行指定的测试集

    帮忙多点点文章末右下角的“好看”支持下,也可以将本文分享到朋友圈或你身边的朋友,谢谢 在PyTest中,提供了几种从命令行运行指定的测试集方式。...方式二,目录级运行,即指定运行某一目录下所有测试集方式,在命令行下: 命令格式: pytest 目录名 > pytest testing/ 注: testing为目录 方式三,指定运行某个模块中的某个测试用例...中的一个测试用例 方式四,指定运行某个模块中的测试类的测试用例, 在命令行中如下 命令格式:pytest 文件名.py::测试类::测试方法 > pytest test_file::TestSuite:...:test_case test_file, 为.py文件 TestSuite,为一个class test_case,为TestSuite的成员函数 一般情况下大家掌握上述四种方式就足够了!!!...至于如何写实际的pytest测试代码,大家可以自己看看相应的官方文档,本文主要分享些基本的知识

    7.4K40

    pytest的一个demo

    pytest的一个demo 上周看了元类的实现方式后,对「代码块」的理解好像有了不一样的认知。...函数是一段代码块 类也是一段代码块 根据现在的工作中使用的pytest写一个demo demo: import pytest import requests @pytest.fixture(scope...第2次测试 ['{"a1", "b1"}', '{"a2", "b2"}'] ....第3次测试 ['{"a1", "b1"}', '{"a2", "b2"}', '{"a3", "b3"}'] 解释: 使用module级别的fixture可以定义一个存放多次数据的空的列表request_list...在fixture中写一个函数,并用yield将它返回以供调用 测试的时候使用参数化构建case会执行三次 从测试结果可以看出,列表内容持续增多 写的时候感觉好像很神奇,后来想想其实和以下方式实现一样:

    62040

    使用Pytest创建一个Python测试自动化项目

    让我们遵循以下约定:tests/ $ mkdir tests $ cd tests 创建一个 为我们的第一个测试命名的Python模块,并添加以下代码:test_math.py def test_addition...将目录更改回项目根目录,并调用pytest模块: $ cd .. $ pipenv run python -m pytest ============================= test session...pytest是如何发现我们的测试的?按名称:pytest将搜索名为 的模块中命名的 测试函数 。有趣的是,pytest不需要任何测试目录中的文件。...参数化测试 如果我们要使用多个输入组合来运行相同的测试过程,该怎么办?pytest有一个装饰器!...让我们编写一个新的参数化输入乘法测试: import pytest @pytest.mark.parametrize( "a,b,expected", [(0, 5, 0), (1, 5, 5)

    2K10

    使用Pytest创建一个Python测试自动化项目

    让我们遵循以下约定:tests/ $ mkdir tests $ cd tests 创建一个 为我们的第一个测试命名的Python模块,并添加以下代码:test_math.py def test_addition...将目录更改回项目根目录,并调用pytest模块: $ cd .. $ pipenv run python -m pytest ============================= test session...pytest是如何发现我们的测试的?按名称:pytest将搜索名为 的模块中命名的 测试函数 。有趣的是,pytest不需要任何测试目录中的文件。...参数化测试 如果我们要使用多个输入组合来运行相同的测试过程,该怎么办?pytest有一个装饰器!...让我们编写一个新的参数化输入乘法测试: import pytest @pytest.mark.parametrize( "a,b,expected", [(0, 5, 0), (1, 5, 5)

    1.5K30

    软件测试|Pytest的必会技巧(一)

    pytest setup和teardown我们在使用selenium执行web自动化测试的时候,当我们需要执行多条测试用例时,执行一条用例就启动一次浏览器显然效率就太低了,我们需要一次启动浏览器,执行多条用例...pytest可以满足我们的需求吗?答案是pytest的setup和teardown完美匹配我们的需求,unittest有的它有,unittest没有的它也有!...用一个和多个都可以类和方法setup/teardown和unittest里面的setup/teardown是一样的功能,setup_class和teardown_class等价于unittest里面的setupClass...setup/teardown功能是一样的,一般二者用其中一个即可。...函数和类混合如果一个.py的文件里面既有函数用例又有类和方法用例,运行顺序又是怎样的呢?

    31720

    Pytest学习(五) - Pytest用例执行测试后的常见报错

    常见的状态 passed:测试通过 failed:断言失败 error:代码编写上的错误 xfail:预期失败,加了 @pytest.mark.xfail() 测试通过的栗子(passed) 示例代码如下...''' import pytest @pytest.fixture() # 定义一个测试数据 def data(): return 1 def test_pass(data):...这块随便抛出一个异常了 raise IOError assert 'py' in data if __name__ == '__main__': pytest.main([...data参数并不存在,找不到自然就error了 总结: 测试用例的代码有异常,包括主动抛出异常或代码有异常,都算failed 当测试用例调用的fixture有异常,或传入的参数有异常的时候,都算error...如果一份测试报告中,error的测试用例数量越多,说明测试用例质量越差 预期失败的栗子(xfail) 这个和testng的异常测试差不多了,就是断言预期的异常,可以测试是否需要代码抛出异常或不抛出。

    1.7K20

    Pytest系列(17)- pytest-xdist分布式测试的原理和流程

    第二步:收集测试项用例 每个worker类似一个迷你型的pytest执行器 worker会执行一个完整的test collection过程【收集所有测试用例的过程】 然后把测试用例的ids返回给master...里, workers实际上是等待master为其发送需要执行的测试用例 当worker收到测试任务, 就顺序执行 pytest_runtest_protocol 值得注意的一个细节是:workers...必须始终保持至少一个测试用例在的任务队列里, 以兼容 hook的参数要求,为了将 nextitem传给hook pytest_runtest_protocol(item, nextitem)...worker会在执行最后一个测试项前等待master的更多指令 如果它收到了更多测试项, 那么就可以安全的执行 , 因为这时nextitem参数已经可以确定 pytest_runtest_protocol...master在worker执行完一个测试后,基于测试执行时长以及每个work剩余测试用例综合决定是否向这个worker发送更多的测试用例 第七步:测试结束 当master没有更多执行测试任务时,它会发送一个

    1.1K20

    Pytest系列(16)- 分布式测试插件之pytest-xdist的详细使用

    这样可以加快开发速度或使用远程计算机的特殊资源。 --looponfail:在子进程中重复运行测试。 每次运行之后,pytest都会等到项目中的文件更改后再运行之前失败的测试。...按照一定的顺序执行 pytest-xdist默认是无序执行的,可以通过 --dist 参数来控制顺序 --dist=loadscope 将按照同一个模块module下的函数和同一个测试类class...下的方法来分组,然后将每个测试组发给可以执行的worker,确保同一个组的测试用例在同一个进程中执行 目前无法自定义分组,按类class分组优先于按模块module分组 --dist=loadfile...按照同一个文件名来分组,然后将每个测试组发给可以执行的worker,确保同一个组的测试用例在同一个进程中执行 如何让scope=session的fixture在test session中仅仅执行一次...pytest-xdist是让每个worker进程执行属于自己的测试用例集下的所有测试用例 这意味着在不同进程中,不同的测试用例可能会调用同一个scope范围级别较高(例如session)的fixture

    2.7K21

    pytest文档81 - 如何管理Captured logging日志

    前言 pytest 自动捕获级别为 WARNING 或以上的日志消息,并以与捕获的 stdout 和 stderr 相同的方式在每个失败测试的各自部分中显示它们。...禁用捕获内容(stdout、stderr和log) 可以完全禁用对失败测试的捕获内容(stdout、stderr和log)的报告: pytest --show-capture=no 禁用后就不再显示stdout...、stderr和log caplog 内置 fixture 在测试中,可以更改捕获的日志消息的日志级别。...[pytest] addopts=-p no:logging pytest 3.4中的不兼容更改 该功能在3.3中引入,在社区反馈后,在3.4中进行了一些不兼容的更改: 除非Log_level配置或...设置log_level将设置全局捕获的级别,因此如果特定测试需要的级别低于此级别,请使用caplog.set_level()功能,否则该测试将容易失败。

    1.2K20

    聊聊 Python 的单元测试框架(三):pytest

    相比于 nose 和 unittest,pytest 允许用户使用更简单的方式编写测试用例,又能得到一个更丰富和友好的测试结果。...4.1 声明和使用 pytest 中的测试夹具更像是测试资源,你只需定义一个夹具,然后就可以在用例中直接使用它。...4.2 共享 在 pytest 中,同一个测试夹具可被多个测试文件中的多个测试用例共享。...在下面的示例中,定义一个 test_eval 测试函数,通过 pytest.mark.parametrize 装饰器指定 3 组参数,则将生成 3 个子测试: @pytest.mark.parametrize...我们不妨罗列一个横向对比表,来总结下这些单元测试框架的异同: unittest nose nose2 pytest 自动发现用例 ✔ ✔ ✔ ✔ 指定(各级别)用例执行 ✔ ✔ ✔ ✔ 支持 assert

    2K40

    跨环境测试框架介绍-pytest的高级用法

    pytest.org有足够的的pytest的介绍,本文只会介绍如何利用pytest提供的特性支持多环境测试。 以下几个特性会在您日后的开发(测试)中遇到。 1....pytest.mark.tryfirst pytest.mark.trylast 这组标签可以直接用来修饰需要被执行的用例,使得这些用例允许在某些特定的环境下执行,标记用例的超时时间等,但另一个有用的使用方式是定义自己的...当然,关于fixture 还有更高级的用法,如何你的测试用例需要提前准备一些数据,那么它是一个很好的选择。 4....结合 tox tox 是另一个能帮助我们更好地完成测试的工具。...{posargs:tests} 以上是一个 tox.ini 文件的片段,它定义了一个执行测试的环境,执行tox 命令,它会在执行测试之前先帮我们创建一个python的 virtualenv 的环境,

    2.8K40

    Pytest系列(12)- 测试结果生成HTML报告插件之pytest-html的详细使用

    如果你还想从头学起Pytest,可以看看这个系列的文章哦!...https://www.cnblogs.com/poloyy/category/1690628.html 环境前提 Python3.6+ 安装插件 pip3 install pytest-html -i...http://pypi.douban.com/simple/ --trusted-host pypi.douban.com 快速入门 pytest --html=report.html 会在当前目录下创建一个...report.html的测试报告 合并CSS 上面命令生成的报告,css是独立的,分享报告的时候样式会丢失,为了更好的分享发邮件展示报告,可以把css样式合并到html里 pytest --html=report.html...--self-contained-html 注意事项 在将文件或链接添加到独立报告时,插件会发出warnings; 在html测试报告中可能无法按预期显示文件或链接

    94920

    pytest学习和使用10-Pytest中的测试用例如何跳过执行?

    可标记无法运行的测试功能,或者您希望失败的测试功能;简单说就是跳过执行测试用例;可选参数reason:是跳过的原因,会在执行结果中打印;可以使用在函数上,类上,类方法上;使用在类上面,类里面的所有测试用例都不会执行...;作用范围最小的是一个测试用例;这个功能和unittest基本是一样的。...()不同于pytest.mark.skip,pytest.mark.skip是作用于整个测试用例;而 pytest.skip()是测试用例执行期间强制跳过不再执行剩余内容;和Python中break 跳出循环类似...和 pytest.mark.skipif 赋值给一个标记变量;不同模块之间共享这个标记变量;# -*- coding:utf-8 -*-# 作者:NoamaNelson# 日期:2022/11/17...;pip list下,我们找一个存在的版本的包试试:图片比如attrs,版本为20.3.0,代码如下:# -*- coding:utf-8 -*-# 作者:NoamaNelson# 日期:2022/11

    1.4K50

    软件测试|详解 Pytest 参数化:简化测试用例的编写

    简介 Pytest 是一个广泛使用的 Python 测试框架,它提供了丰富的功能来编写和执行测试用例。...其中一个强大的特性是参数化,它允许我们通过一种简洁的方式运行多个输入参数的相似测试用例,从而减少冗余的代码。本文将详细介绍 Pytest 的参数化功能以及如何使用它来简化测试用例的编写。...参数化测试的优势 参数化测试允许我们为一个测试函数提供多组输入数据,以验证函数在不同输入条件下的行为。这有助于更全面地覆盖测试用例,减少重复代码,以及在代码变更时更容易维护测试。...参数化测试的基本用法 以下是使用 Pytest 参数化的基本步骤: 导入pytest import pytest 创建测试函数,并在函数上使用 @pytest.mark.parametrize 装饰器...的参数化功能是一个强大的工具,可以显著简化测试用例的编写,同时还能更全面地覆盖不同的测试情况。

    41210

    Pytest系列(18)- 超美测试报告插件之allure-pytest的基础使用

    Web报告形式非常简洁地显示已测试的内容,也允许参与开发过程的每个人从日常测试中提取最大程度的有用信息 从开发/质量保证的角度来看,Allure报告可以缩短常见缺陷的生命周期:可以将测试失败划分为bug...,Allure提供了一个清晰的“全局”,涵盖了已涵盖的功能,缺陷聚集的位置,执行时间表的外观以及许多其他方便的事情 Allure的模块化和可扩展性确保您始终能够微调某些东西,以使Allure更适合您 个人介绍...对于管理层来说,测试报告当然是越直观、简洁、数据清晰越好,而Allure就满足以上这么多点,而且很好的和pytest集成了 相比于pytest-html来说,Allure的报告真的是十全十美鸭!!...查看测试用例详情 parameters:如果用了 ,在右侧的parameters是可以看到传了什么参数和对应的值 @pytest.mark.parametrize set up:调用fixture的前置操作...Allure报告结构 Overview:总览 Categories:类别,默认是分了failed和error,凡是执行结果是其中一个的都会被归到类里面,可以通过这里快捷查看哪些用例是failed

    1.3K10

    软件测试测试开发全日制培训|Pytest的异常处理

    前言在断言一些代码块或者函数时会引发意料之中的异常或者其他失败的异常导致程序无法运行时,使用raises捕获匹配到的异常可以让代码继续运行。...的异常处理:pytest.raisespytest.raises和with语句一起使用,成功断言到期望异常则测试通过,未断言到期望异常则测试失败,如下代码中, with语句范围断言到期望异常TypeError...在测试中,try...except可以用来捕获并处理预期的异常。...: # 异常处理代码 assert True, "除数不能为零"使用pytest.raises检查异常pytest.raises是pytest提供的一个工具,用于检查是否引发了预期的异常...通过结合使用assert语句、try...except块和pytest.raises工具,你可以更有效地测试你的Python代码,并且在出现异常时能够进行适当的处理。

    14210
    领券