pytest使用】的更多相关文章

flask-sqlalchemy.pytest 的单元测试和事务自动回滚 使用 flask-sqlalchemy 做数据库时,单元测试可以帮助发现一些可能意想不到的问题,像 delete-cascade .数据长度.多对多关联等等.如果使用 alembic 管理数据库版本,还可以写些跟迁移相关的单元测试.在团队中实现规范的单元测试,再配合 flake8 / pep8 之类的代码规范工具,有助于提高代码的质量,让开发人员有意识去主动发现问题,在新功能进行回归测试时可重复使用单元测试的代码,避免中断…
对于测试来讲,不管是功能测试,自动化测试,还是单元测试.一般都会预设一个正确的预期结果,而在测试执行的过程中会得到一个实际的结果.测试的成功与否就是拿实际的结果与预期的结果进行比较.这个比的过程实际就是断言(assert). 在unittest单元测试框架中提供了丰富的断言方法,例如assertEqual().assertIn().assertTrue().assertIs()等,而pytest单元测试框架中并没提供特殊的断言方法,而是直接使用python的assert进行断言. 下面我们就来介…
fixtures不太好翻译,可看作是夹心饼干最外层的两片饼干.通常用setup/teardown来表示.它主要用来包裹测试用例,为什么需要这样的饼干呢?我们以web自动化测试为例,例如,要测试的某系统需要登录/退出.那么每一条用例执行前都需要登录,执行完又都需要退出,这样每条用例重复编写登录和退出就很麻烦,当然,你也可以把登录和退出封装为方法调用,但是每个用例中都写调用也很麻烦.有了fixtures就变得简便很多. 测试函数                                    …
继续pytest单元测试框架的学习,pytest可以生成多种类型的测试报告.这一节就来学习pytest如何生成测试报告. 创建test_calss.py 测试用例文件,这里以测试该文件为例. #coding=utf-8 class TestClass: def test_one(self): x = "this" assert "h" in x def test_two(self): x = "hello" assert x == "h…
使用 tox flake8 pytest 规范 python 项目 python 中有些很好的工作来规范整个项目的开发,而其中使用较多的就是使用 tox . flake8 . pytest . tox 管理 virtualenv 环境,可在一个 python 项目中定义多个版本的 python 环境,从而检查项目源代码的兼容性.flake8 进行源代码检查,根据 pep8 检查源代码是否符合规范(也可使用 pylint ,pylint 较严格). pytest 进行单元测试,或者通过 pytes…
接着上一篇的内容,这里主要讲下参数化,pytest很好的支持了测试函数中变量的参数化 一.pytest的参数化 1.通过命令行来实现参数化 文档中给了一个简单的例子, test_compute.py 的测试函数如下: # content of test_compute.py def test_compute(param1): assert param1 < 4 在conftest.py中添加两个函数,一个是添加参数,一个是根据参数生成测试 # content of conftest.py def…
继续文档的第二章 (一)pytest中可以在命令行中静态/动态添加option,这里没什么好讲的,略过... 这里面主要讲下如何试用skip/xfail,还有incremental(包含一些列的测试步骤,如果某一步出错后,该步骤之后的所有步骤都没有任何意义了,xfail掉) 1)首先来看下怎样通过命令行来skip一些case,首先要添加个option,然后使用@pytest.mark.skipif( condition) , xfail使用@pytest.mark.xfail( conditio…
前言 pytest配置文件能够改变pytest框架代码的运行规则.比如修改pytest收集用例的规则,添加命令行参数等等!下面我们来一一讲解常用的一些配置项 Help 通过命令pytest --help查看配置文件中可以添加的一些参数及选项,这些选项都是可以添加到pytest的配置文件的 [pytest] ini-options in the first pytest.ini|tox.ini|setup.cfg file found: markers (linelist) markers for…
前言 Pytest系列已经写了几篇文章了,也不知道对多少人有帮助,总之对于我自己来说该掌握的都已经掌握了,那么今天我们再来说说pytest如何生成一个完整的html测试报告,让你在吹牛逼的路上再多一份资本!废话不多说,进入正题!(咋就莫名其妙想起这句话了呢, 估计看文章看多了,貌似挺多人用这句话过度……) 使用pytest-html插件生成测试报告 pytest-html生成报告 pytest是借助pytest-html插件生成测试测试报告, 不用自己编写生成报告代码.github源码地址 ht…
前言 今天我们再说一下pytest框架和unittest框架相同的fixture的使用, 了解unittest的同学应该知道我们在初始化环境和销毁工作时,unittest使用的是setUp,tearDown方法,那么在pytest框架中同样存在类似的方法,今天我们就来具体说明. 先附上官方文档的一段说明 1.每个级别的setup/teardown都可以多次复用 2.如果相应的初始化函数执行失败或者被跳过则不会执行teardown方法 3.在pytest4.2之前,xunit fixture 不遵…
前言 前面几篇随笔基本上已经了解了pytest 命令使用,收集用例,finxture使用及作用范围,今天简单介绍一下conftest.py文件的作用和实际项目中如是使用此文件! 实例场景 首先们思考这样一个问题:如果我们在编写测试用的时候,每一个测试文件里面的用例都需要先登录后才能完成后面的操作,那么们该如何实现呢?这就需要我们掌握conftest.py文件的使用了. 实例代码 创建如下一个目录 ConftestFile |conftest.py |test_file_01.py |test_f…
前言 学pytest就不得不说fixture,fixture是pytest的精髓所在,就像unittest中的setup和teardown一样,如果不学fixture那么使用pytest和使用unittest是没什么区别的(个人理解). fixture用途 1.做测试前后的初始化设置,如测试数据准备,链接数据库,打开浏览器等这些操作都可以使用fixture来实现 2.测试用例的前置条件可以使用fixture实现 3.支持经典的xunit fixture ,像unittest使用的setup和te…
前言 上篇文章相信大家已经了解了pytest在cmd下结合各种命令行参数如何运行测试用例,并输出我们想要看到的信息.那么今天会讲解一下pytest是如何收集我们写好的用例?我们又有哪些方式来运行单个用例或者批量运行用例呢?下面将为大家一一解答! pytest收集用例原理分析 首先我们按照如下目录结构新建我们的项目 [pyttest搜索测试用例的规则] |[测试用例目录1] | |__init__.py | |test_测试模块1.py | |test_测试模块2.py |[测试用例目录2] |…
前言 上篇博客说到命令行执行测试用例的部分参数如何使用?今天将继续更新其他一些命令选项的使用,和pytest收集测试用例的规则! pytest执行用例命令行参数 --collect-only:罗列出所有当前目录下所有的测试模块,测试类及测试函数 --tb=style:屏蔽测试用例执行输出的回溯信息,可以简化用例失败时的输出信息.style可以是 on,line,short,具体区别请自行体验 --lf:当一次用例执行完成后,如果其中存在失败的测试用例,那么我们可以使用此命令重新运行失败的测试用例…
前言 pytest是一款强大的python自动化测试工具,可以胜任各种类型或者级别的软件测试工作.pytest提供了丰富的功能,包括assert重写,第三方插件,以及其他测试工具无法比拟的fixture模型.pytest是一个软件测试框架,是一款命令行工具,可以自动找到测试用例执行,并且回报测试结果.有丰富的基础库,可以大幅度提高用户编写测试用例的效率.具备扩展性,用户可以自己编写插件,或者安装第三方提供的插件.可以很容易地与其他工具集成到一起使用.比如持续集成,web自动化测试等. 下面列举了…
会发现不是控制台输出,而是pytest模式. 修改: 当运行时,发现无法运行: 然后点击Add Configuration, 点击加号,点击Python: 选择脚本路径和解释器.点击OK即可.…
前言 平常写自动化用例会写一些前置的fixture操作,用例需要用到就直接传该函数的参数名称就行了.当用例很多的时候,每次都传这个参数,会比较麻烦.fixture里面有个参数autouse,默认是Fasle没开启的,可以设置为True开启自动使用fixture功能,这样用例就不用每次都去传参了 调用fixture三种方法 1.函数或类里面方法直接传fixture的函数参数名称 2.使用装饰器@pytest.mark.usefixtures()修饰 3.autouse=True自动使用 用例传fi…
标记失败用到的情况是,本身就知道这是失败的例子,所以,不用让他运行,直接跳过.或者是依赖于某个方法,某个方式失败的话,用例直接标记成失败. 标记失败有两种方法,一种是方法内部,一种是方法外部.内部用pytest.xfail(""),外部用装饰@pytest.mark.xfail(condition=None, *, reason=None, raises=None, run=True, strict=False) 具体看以下的两个例子: #!/usr/bin/env/python #…
前言: pytest可以规定那些要跑,那些不跑,跑特定的哪些?比如以下的这个例子: #!/usr/bin/env/python # -*-coding:utf-8-*- import pytest @pytest.mark.runtest def test_run(): print("run") def test_not_run(): pass def test_not_run1(): pass class TestClass: def test_method(self): pass…
最近在学习web自动化,所以在这里总结一下pytest框架. 其实pytest 和 unittest 都是自动化测试框架,但是pytest更好用一些,有以下几个优点:1)可以根据标签执行用例:2)??? 一.首先需要安装pytest ,使用pip命令就可以: 二.pytest的标签功能:在用例前可以添加标签,如冒烟用例,XX用例.然后执行时可以选择仅执行冒烟用例: 三.用例的搜索规则: 在项目目录下执行pytest 命令:pytest会自动搜索以"*_test.py”或“test_*.py”命名…
一.用例编写规则 1.unittest提供了test cases.test suites.test fixtures.test runner相关的类,让测试更加明确.方便.可控.使用unittest编写用例,必须遵守以下规则: (1)测试文件必须先import unittest (2)测试类必须继承unittest.TestCase (3)测试方法必须以“test_”开头 (4)测试类必须要有unittest.main()方法 2.pytest是python的第三方测试框架,是基于unittes…
安装就讲这么多,别的不多比比 第1个例子(基本法要了解): 这个例子中,还有一些需要注意的知识点: 1 pytest将在当前目录及其子目录中运行test _ * .py或* _test.py形式的所有文件 那么当前目录指的是什么呢? 2 pytest查找所遵循的标准测试发现规则,扩展资料有时间可以查看一下 第2个例子(重试次数): 使用 --maxfail=2 可以设置最大重试次数 pytest --maxfail=2 第3个例子(指定测试/选择测试): 指定一个文件运行测试 pytest te…
pytest有哪些优点? 允许直接使用assert进行断言,而不需要使用self.assert*; 可以自动寻找单测文件.类和函数; Modular fixtures可以用于管理小型或参数化的测试信息; 与unittest和nose单测框架兼容; 兼容性较好,支持Python 2.7,Python 3.4+. 丰富的插件支持,共计有超过315个插件支持; pytest收集测试用例规则 1.默认在当前目录搜集用例,在那个目录下运行pytest命令,就在这个目录下去收集 2.搜索规则 测试文件以te…
前沿: 有的case,需要依赖于某些特定的case才可以执行,比如,登陆获取到的cookie,每次都需要带着他,为了确保是同一个用户,必须带着和登陆获取到的同一个cookies. 大部分的用例都会先登录,那就需要把登录单独抽出来写个函数,其它用例全部的调用这个登陆函数就行.但是登录的账号不能写死,有时候我想用账号1去登录,执行用例1,用账号2去登录执行用例2,所以需要对函数传参. 登录函数传参: 把登录单独成立,写一个函数,传2个参数user和passwd,写用例的时候调用登录函数,输入几组us…
allure是一个report框架,支持java的Junit/testng等框架,当然也可以支持python的pytest框架,也可以集成到Jenkins上展示高大上的报告界面. 环境准备 1.python3.6 2.mac环境 3.pycharm 4.pytest-allure-adaptor 5.allure2.8.0 6.java1.8或者1.8以上 Allure Pytest Adaptor是Pytest的一个插件,通过它我们可以生成Allure所需要的用于生成测试报告的数据.安装pyt…
pytest.mark.skip可以标记无法在某些平台上运行的测试功能,或者你希望失败的测试功能 skip意味着只有在满足某些条件时才希望测试通过,否则pytest应该跳过运行测试.常见事例时非windows平台上跳过仅限windows的测试,或者跳过测试依赖于当前不可用的外部资源(例如数据库) xfail意味着你希望测试由于某种原因而失败.一个常见的例子时对功能的测试尚未实施,或尚未修复的错误.当测试通过时尽管预计会失败(标有pytest.mark.xfail),它是一个xpass,将在测试摘…
问题: 在调试一个很简单的代码时无法输出结果,运行结果如下形式: 出现以上情况,主要是因为在运行时是以pytest方式运行的,要换回以普通方式去运行. 问题解决: 首先是红色圈圈里的白色三角形. 然后再点击三角形下的Edit configurations... 点击”-“,去掉test_argv.py 再点击 ”+“,然后点击python 然后在Name中写入该文件名,在script path中填入该文件所在的路径 点击Ok,然后在代码界面中会发现是可以以普通方式运行.…
pytest是基于py unittest的一个单元测试框架,用起来比unittest简单不少,不过和unittest使用不太一样,总结如下: 格式: case的py文件名必须是test开头 def用例必须是test开头 class名必须是Test开头,注意大写 class中的def用例必须是test开头 pytest提供了很多运行参数,比较常用的有: -k:只执行指定的用例-s:命令行显示测试代码的输出,如果需要输出html结果最好不要-s -v:显示详细信息 -q:不显示详细信息 --html…
1.在命令行运行 2.在pytest框架中,有如下约束: 所有的单测文件名都需要满足test_*.py格式或*_test.py格式. 在单测文件中,可以包含test_开头的函数,也可以包含Test开头的类. 在单测类中,可以包含一个或多个test_开头的函数. 此时,在执行pytest命令时,会自动从当前目录及子目录中寻找符合上述约束的测试函数来执行. 3.postman导出Python requests代码 4.导出的代码 import requests url = "https://www.…
一.背景说明 上周测试的同事说pytest+allure环境在别人电脑上跑没问题,在她的环境跑却报错让帮看一下.其实pytest只是听说过allure直接没听过,但不能直接表示不会,祭出百度大法. 看环境pytest直接以python库的形式安装就可以了:pip install pytest pytest-allure-adaptor pytest-rerunfailures pytest-html allure安装也简单下载解压然后将bin目录添加到环境变量即可.下载地址:https://gi…