zoukankan      html  css  js  c++  java
  • pytest测试框架简介(二)

    一:  Pytest Exit Code含义清单

    Exit code 0  所有用例执行完毕,全部通过

    Exit code 1  所有用例执行完毕,存在Fail的测试用例

    Exit code 2  用户中断了测试的执行

    Exit code 3  测试执行过程发生了内部错误

    Exit code 4 pytest 命令行使用错误

    Exit code 5 未采集到可用测试用例文件

    二: 控制测试用例执行

    pytest -x                第一次失败就停止测试

    pytest --maxfail=2   出现2个失败就终止测试

    pytest  testing/       指定测试目录

    pytest -k “MyClass and not method”  通过关键字表达式过滤执行

    三: 多进程运行case

    当cases量很多时,运行时间过长,如果想缩短测试时长,可以用多进程的方式

    安装pytest-xdist: pip install -U pytest-xdist

    运行模式:   pytest test_*.py -n Num   其中Num填写并发的进程数

    四:重试运行case

    有时遇到服务器响应超时导致case运行失败,我们可以通过重试的方式解决

    安装pytest-rerunfailures: pip install -U pytest-rerunfailures

    运行模式: pytest test*.py --reruns Num   其中Num是重试的次数

    五:显示print内容

    运行测试脚本时,为了调试或打印一些内容,我们会在代码里面加一下print的内容,运行pytest时这些内容不会显示出来,如果加上-s就可以显示了.

    运行模式: pytest test*.py -s

    pytest的多种模式是可以叠加执行的,例如 pytest test*.py -s -n 4

    六:pytest的setup和teardown函数

    1:setup和teardown主要分为:模块级,类级,功能级和函数级

    2:存在于测试类内部

    函数级别setup()/teardown()  每运行一次测试函数都会运行一次setup和teardown

    def add(x, y):
        return x+y
    
    class Test_MyClass():
        # 函数级 每个用例执行都会执行一遍
        def setup(self):
            print("-------->setup")
        # 函数级结束
        def teardown(self):
            print("------->teardown")
        def test_something(self):
            assert add(1, 5) == 6
        def test_something1(self):
            assert add(1, 6) == 7

     类级别: 在一个测试类只运行一次setup_class和teardown_classs

    class Test_ABC:
        # 测试类级别
        # 智慧在这个类里面前后各执行一次
        def setup_class(self):
            print("------>setup_class")
        def teardown_class(self):
            print("------>teardown_class")
        def test_a(self):
            assert 1
        def test_b(self):
            assert 1

    七:pytest配置文件

    pytest的配置文件通常放在测试目录下,名称为pytest.ini, 命令运行时会使用该配置文件中的配置

    [pytest]
    addopts = -s --html=./report.html --reruns=2  # 空格分隔,可添加多个命令行参数
    testpaths = ../pytest_test   # 上一级目录下的pytest_test文件夹
    python_files = test*.py     # 配置搜索的文件名称
    python_classes = Test_*     # 配置测试搜索的测试类名
    python_functions = test_*   # 配置测试搜索的测试函数名
    

     八:pytest测试报告

    pytest-html是一个插件,用于生成测试结果的HTML报告

    安装方式: pip install pytest-html

    通过命令行方式,生成xml/html格式的测试报告,存储于用户指定路径。插件名称:pytest-html

    使用方法: 命令行格式:pytest --html=用户路径/report.html

    import pytest
    class Test_ABC:
        def setup_class(self):
            print("------->setup_class")
        def teardown_class(self):
            print("------->teardown_class")
        def test_a(self):
            print("------->test_a")
            assert 1
        def test_b(self):
                print("------->test_b")
                assert 0 # 断言失败```
    运行方式:
    1.修改pytest_test/pytest.ini文件,添加报告参数,即:addopts = -s --html=./report.html 
        # -s:输出程序运行信息
        # --html=./report.html 在当前目录下生成report.html文件
        ️ 若要生成xml文件,可将--html=./report.html 改成 --html=./report.xml
    2.命令行进入pytest_test目录
    3.执行命令: pytest
    执行结果:
        1.在当前目录会生成assets文件夹和report.html文件
     

  • 相关阅读:
    BZOJ 3811: 玛里苟斯 线性基
    HDU 3949 XOR 线性基
    BZOJ 2115: [Wc2011] Xor 线性基 dfs
    BZOJ 3963 HDU3842 [WF2011]MachineWorks cdq分治 斜率优化 dp
    BZOJ 3262: 陌上花开 cdq分治 树状数组
    BZOJ 2653: middle 主席树 二分
    BZOJ 3524 [Poi2014]Couriers 主席树
    BZOJ 4826: [Hnoi2017]影魔 单调栈 主席树
    BZOJ 3956: Count 主席树 可持久化线段树 单调栈
    2018/4/9省选模拟赛 0分
  • 原文地址:https://www.cnblogs.com/zhouzetian/p/13586906.html
Copyright © 2011-2022 走看看