• pytest常用配置文件之pytest.ini


     

    pytest.ini:pytest的主配置文件,可以改变pytest的默认行为,有很多可配置的选项。
    conftest.py:是本地的插件库,其中的hook函数和fixture将作用于该文件所在的目录以及所有子目录。
    init.py:每个测试子目录都包含该文件时,那么在多个测试目录中可以出现同名测试文件。

    pytest.ini位置:放在项目根目录下 ,名字固定, 运行时程序自动解析:

    常用配置:

    1、addopts

    作用:addopts参数可以更改默认命令行选项,当我们在cmd或Terminal输入一堆指令去执行用例的时候,就可以用该参数代替了,省去重复性的敲命令工作。命令行只需要输入pytest即可

    --reruns=1:用例失败重跑一次

    -p no:warnings, :不在结果中输出用例的告警信息

    2、配置项testpaths

    testpaths指示pytest去哪里访问。testpaths是相对于根目录的路径,限定测试用例的搜索范围。只有在命令行执行pytest未指定文件目录参数或测试用例标识符时,该选项才生效。

    3、xfail_strict = true 

    由@pytest.mark.xfail装饰,但实际通过的测试用例结果为xpassed的用例被报告为失败,如下test_5所示:

    @pytest.mark.run(order=5)
    @pytest.mark.xfail(condition=True,reason='test_s预期失败结果也失败,就是预期失败成功了,结果xfailed')
    def test_2(self):
    print("*****test_2******")
    assert 2==1
    @pytest.mark.xfail(condition=True,reason='test_s预期失败却通过,就是预期失败失败了xpassed')
    def test_5(self):
    print("*****test_5******")
    assert 2==2

    4、log_cli 是否开启打印日志

    格式:log_cli=True 或False(默认),或者log_cli=1 或 0 ;log_cli=1 可以看到哪个package下的哪个module下的哪个测试用例是否passed还是failed;

    log_cli = 1
    log_cli_level = INFO
    log_cli_format = %(asctime)s [%(levelname)8s] %(message)s (%(filename)s:%(lineno)s)
    log_cli_date_format=%Y-%m-%d %H:%M:%S

    ************************************pytest 知识点汇总************************************

    单元测试框unittest,pytest
    unittest是官方的,不需要单独安装,pytest是在unittest上扩展的,是需要安装的
    pip install pytest

    如何批量运行测试用例
    如何断言
    怎样生成测试报告(可以是html,或aller集成)
    基于上面的3个问题,引入了单元测试框架unittest、pytest
    • 一、pytest特点如下(比unittest更简洁更高效):
    1、测试文件必须“test_”开头或“_test”结尾
    2、测试方法必须以“test_”开头
    3、测试类命名以"Test"开头

    区别:
    unittest必须写到类里,类继承unittest.testcases,pytest的类直接Test开头即可,还可以直接写函数
    • 二、fixture函数
    1、setup_function() 函数执行前的操作
    2、setup_module() 模块之前,python文件之前
    3、setup_method() 在方法之前执行
    4、setup_class() 在每个类之前执行

    如果是unittest的话,需要装饰器 如下所示:
    class Test(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
    print("start!")
    #初始化环境 开始执行脚本
    @classmethod
    def tearDownClass(cls):
    time.sleep(1)
    print("end!")
    #结束
    def test01(self):
    print(u"执行测试用例01")
    #开始执行测试用例...
    def test03(self):
    print(u"执行测试用例03")

    def test02(self):
    print(u"执行测试用例02")

    def addtest(self):
    print(u"add方法")

    if __name__ == "__main__":
    unittest.main()
    • 三、命令行参数
    pytest -sv test_study.py -s会把print打印出来,v打印的更详细
    • 四、失败重试
    pip install pytest-rerunfailures
    命令行加参数即可 --reruns 3 (重试3次)
    pytest -sv test_study.py --reruns 2 断言失败重试2次
    • 五、跳过测试函数
    加装饰器
    @pytest.mark.skipif(condition,reason=None) 有条件跳过
    @pytest.mark.skip 无条件跳过
    • 六、预期失败
    @pytest.mark.xfail(condition,reason=None)
    2 passed, 1 skipped, 1 xpassed, 1 xfailed, 1 warning in 0.04s 运行结果中的xpassed是预期失败却断言成功了; xfailed预期失败却断言失败了,
    • 七、调整测试用例执行的顺序(正常执行顺序是按asc码云运行的,)
    pip install pytest-ordering
    加装饰器 @pytest.mark.run(order=x)
    order值全正或全负时,值越小,优先级越高
    正负数都有时,正数优先级高


  • 相关阅读:
    如何实现冒泡排序
    每天一个JS 小demo之原生数组splice方法书写。主要知识点:锻炼思维逻辑能力,对于数组方法的理解和各种情况的考量
    每天一个JS 小demo之日历制作。主要知识点:日期函数和对于函数封装的灵活运用
    每天一个JS 小demo之商品下架特效制作,主要知识点:定时器,倒计时,抖动特效。
    Html5语义化标签详解及其兼容性处理
    asp.net mvc 遍历linq to sql 多表联查
    将ASP.NET 数据导出到execl
    Microsoft SQL Server 2008 R2附加数据库报错5120解决办法
    十进制、二进制、八进制、十六进制互相转换
    结构体数组的增删改查
  • 原文地址:https://www.cnblogs.com/liuchunxiao83/p/14675063.html
Copyright © 2020-2023  润新知