首页 > 其他分享 >pytest

pytest

时间:2023-05-28 20:11:30浏览次数:52  
标签:-- unittest fixture 用例 pytest setup

一、web自动化内容
UI - user interface
web网页、客户端(PC,app)

1、pytest

2、selenium
selenium介绍、元素定位、元素操作

python+selenium:
框架:
PageObject模式
优化和封装 - selenium二次封装、失败截图、执行过程输出、异常信息输出

selenium原理

appium

###################################这是分隔线###################################
二、pytest初识
unittest
写用例 TestCase
收集用例 TestLoader.discover()
生成报告 HtmlTestRunner
模板化的东西

pytest
能够运行unittest用例
灵活

共同点
测试框架:
均通过python来编写测试用例、收集用例、运行用例、生成报告

不同点
一、编写用例

1、编写用例
unittest:继承TestCase
pytest:函数/类里面的方法 -- 用例名称必须以test_开头。如果用例在类中,类名必须以Test开头

2、前置后置
unittest:setup/teardown setupClass/teardownClass

pytest:
方案一:
沿用unittest的风格
1、用例级别:setup/teardown -- 类里面的用例和类外的用例都可以
2、类级别:setup_class/teardown_class -- 类用
3、模块级别:setup_module/teardown_module --模块用

方案二:
fixture

3、断言
unittest:self.assertXXXXX()
pytest:assert 表达式

二、收集用例和运行用例
实际项目:用例分散在多个文件当中
unittest:TestLoader.discover(目录) - 收集到套件当中,run方法去执行
pytest:
不需要写代码去收集用例 - 自动收集/发现用例的方式
执行用例的时候会自动收集:
pytest命令行:pytest [参数]

(1)如何自动收集用例?
1、目录 - 从哪个目录下开始搜索用例
rootdir:pytest命令在哪个目录下运行,就以哪个目录为rootdir

2、文件名 - 符合test_*.py或者*——test.py条件的文件名,一定有用例

3、函数/类下的方法 - 函数名以test_开头
                - 以Test开头(不含__init__)的类下的test_开头

(2)收集并运行用例:
方式一:
    命令行:pytest -s -v  控制台显示详细的用例执行情况
方式二:
    python文件:pytest.main()
    执行顺序
    1、文件名:ASCII
    2、文件内部:按代码先后顺序

三、生成测试报告
unittest:HtmlTestRunner、BeautifulReport
pytest:有非常多的插件
(1)html-插件
html插件安装命令:pip install pytest-html

    (2)allure插件
    allure插件安装命令:pip install allure-pytest
    allure命令行工具下载地址:https://repo.maven.apache.org/maven2/io/qameta/allure/allure-commandline/
    allure serve

    (3)重运行-插件

官方文档:https://docs.pytest.org/en/stable/
pytest+allure+jenkins集成:https://www.cnblogs.com/Simple-Small/p/11512337.html
pytest:https://www.cnblogs.com/Simple-Small/tag/pytest/

###################################这是分隔线###################################
三、fixtrue用法
一、前置后置
unittest:
setup/teardown
setup得到的变量,怎么传递给测试用例:self.XXX = value
setupClass/teardownClass
setupClass得到的变量,怎么传递给测试用例:self.XXX = value

pytest:
    方案一:沿用unittest的风格
        1、用例级别:setup/teardown  -- 类里面的用例和类外的用例都可以
        2、类级别:setup_class/teardown_class  -- 类用
        3、模块级别:setup_module/teardown_module  --模块用

    方案二:fixture-- 详解

二、fixture:先定义,再调用和共享
(1)定义:
1、函数实现,函数名称不固定 -- 如何知道是前置后置?
@pytest.fixture
def fix():
pass

2、前置操作和后置操作,写在一个函数里 -- 怎么区分哪些是前置代码?后置代码?
    @pytest.fixture
    def fix():
        前置代码
        yield  #分隔线
        后置代码

3、4个作用域:测试函数(function)、测试类(class)、测试模块文件(module)、测试会话(session)
    @pytest.fixture(scope=function(默认值)/class/module/session)
    def fix():
        前置代码
        yield  #分隔线
        后置代码

4、不跟测试类/测试用例放在一起 -- 如果测试类需要使用,怎么办?需要的时候再调用

5、前置操作得到的一些数据,如何传递给测试用例?
    yield 返回值

    在测试用例中:以fixture函数名作为用例参数。用例参数接受返回值
    测试函数的参数:1、fixture
                 2、参数化

6、共享机制:conftest.py -- 详解
    conftest.py  定义fixture,可以定义多个

(2)调用:
用例/类 主动调用:哪儿需要哪儿调

调用方式:
@pytest.mark.usefixtures("fixture的函数名称")
测试类/测试函数

如果fixture有返回值:
那么函数名作为测试函数的参数时,则可以不用使用:@pytest.mark.usefixtures("函数名称")

(3)共享
conftest.py共享
1.所在目录下全面共享
2.支持嵌套

标签:--,unittest,fixture,用例,pytest,setup
From: https://www.cnblogs.com/lucilla/p/17431603.html

相关文章

  • Pytest - Fixture(5) - 作用域(scope)
    Pytest-Fixture作用域(scope)之前讲过,fixture里面有个scop参数,这个参数就是填写fixture作用域的;function:每一个函数或方法都会调用;class:每一个类调用一次,一个类中可以有多个方法;module:每一个.py文件调用一次,该文件内又有多个function和class;session:是多个文......
  • Pytest - Fixture(3) - yield遇到异常
    Pytest-yield遇到异常如果yield前面的代码,即setup部分已经抛出异常了,则不会执行yield后面的teardown内容;如果测试用例抛出异常,yield后面的teardown内容还是会正常执行;test_py.pyimportpytest#配置自动运行的[email protected](scope="function",autouse=Tr......
  • Pytest - Fixture(2) - 实现setup和teardown(yield)
    Fixture实现setup和teardown(yield)用fixture实现teardown并不是一个独立的函数,而是用yield函数来开启teardown操作;具体yield是什么,可以去度娘一下~test_py.pyimportpytest#配置自动运行的[email protected](scope="function",autouse=True)defo......
  • Pytest - Fixture(1) - 入门&概述
    Pytest-Fixture入门&概述之前讲过测试用例的前置和后置的方法,可以使用setup和teardown函数实现,但是这种方法是用于全部测试用例的;当我有部分测试用例不需要setup的方法该怎么办?pytest提供了fixture方法,让我们可以自定义测试用例的前置及后置条件;还可以根据配置......
  • Pytest - setup 和 teardown
    Pytest-setup和teardown执行用例肯定有些需要前置条件或后置操作,例如前置的用户登陆,后置的清理数据等操作;unittest提供了两种前置(setup、setupClass)和两种后置(teardown、teardownClass);相比之下,pytest提供了十种setup和teardown方法:模块级别:setup_module、te......
  • Pytest - 断言判断(2) - 断言失败继续执行(pytest-assume)
    断言失败继续执行前言一般情况下我们在使用assert断言失败后,后面的代码就不会继续运行;如果我们想要在断言失败后想要继续运行代码,就不能使用assert进行验证;一个可以允许pytest测试用例中,执行多个失败的断言的插件:多重断言pytest-assume安装pipinstallpytest......
  • Pytest - pytest 命令(1) - 命令执行方法
    命令执行方法讲解下pytest分别在Windows,Linux,Pycharm中,执行pytest的方法;追加的参数可以参考:Pytest-pytest命令(2)-命令参数及含义Pytest-pytest命令(3)-常用命令的使用Windows执行Windows下执行pytest测试脚本没什么难度,在用例的目录下打开cmd窗口......
  • pytest + yaml 框架 -29.模板过滤器语法与自定义过滤器使用
    前言v1.2.6版本支持模板过滤器语法的使用,并且可以自定义过滤器了。针对有同学提到上个接口返回一个id值,下个接口引用变量的时候需要根据这个值做一些运算,比如在引用的结果加1.jinja2是可以支持模板过滤器语法的,本篇介绍下模板过滤器的相关使用.v1.2.6版本主要更新以下几点1......
  • pytest command line
       pytest-v-s--last-failed--alluredir=report/xml -v打印详细的信息 -s输出print打印信息 --last-failed只执行上次失败的用例 --alluredir=report/xml输出alluredir到report/xml......
  • APP自动化--pytest-把图片添加到测试报告中--(异常截图)
    前面在 APP自动化--pytest-把图片添加到测试报告中--(主动截图)中说明了extra.append(extras.image(driver1.get_screenshot_as_base64()))的用法,那么把它放到conftest的异常截图代码中就可以实现异常截图。importpytestfrompytest_htmlimportextras"""解决pytest-html......