当前位置:   article > 正文

pytest框架-参数化parametrizing、命令行传参_pytest.main(["--cmdopt="])

pytest.main(["--cmdopt="])

目录

1、parametrizing

1)pytest.mark.parametrize装饰器实现测试用例参数化。

2)标记单个实例参数化

2、参数组合

3、pytest_addoption注册命令行传参

1)conftest配置参数

2)pytest_addoption 注册、pytestconfig 获取命令行参数 

 3)parser.addoption() 参数说明

name

action、default、const、help

type

choices


1、parametrizing

1)pytest.mark.parametrize装饰器实现测试用例参数化

例子:实现检查一定的输入和期望输出测试功能

新建test_1.py文件:

  1. #coding:utf-8
  2. #实现检查一定的输入和期望输出测试功能
  3. import pytest
  4. @pytest.mark.parametrize("a,b",
  5. [("1+2", 3),
  6. ("5-3", 2),
  7. ("6*6", 30),
  8. ("81/9",8)
  9. ])
  10. def test_eval(a, b):
  11. assert eval(a) == b
  12. if __name__ == "__main__":
  13. pytest.main(["-s", "test_1.py"])

运行结果:

 函数的参数,在运行结果中可以看到输入和输出值

2)标记单个实例参数化

使用内置的mark.xfail

新建test_2.py文件:

  1. #coding:utf-8
  2. #实现检查一定的输入和期望输出测试功能
  3. import pytest
  4. @pytest.mark.parametrize("a,b",
  5. [("1+2", 3),
  6. pytest.param("5-3", 4,marks=pytest.mark.xfail),
  7. ("6*6", 36),
  8. pytest.param("81/9",8,marks=pytest.mark.xfail),
  9. ])
  10. def test_eval(a, b):
  11. print("--------开始执行用例ooo-------")
  12. assert eval(a) == b
  13. if __name__ == "__main__":
  14. pytest.main(["-s", "test_2.py"])

运行结果:

x表示标记为失败的用例,预期结果是失败,实际运行也是失败,显示xfailed

.表示成功的用例,预期结果是成功,实际运行也是成功

2、参数组合

若要获得多个参数化参数的所有组合,可以堆叠参数化装饰器

新建test_3.py文件:

两个参数a,b

  1. #若要获得多个参数化参数的所有组合,可以堆叠参数化装饰器
  2. import pytest
  3. @pytest.mark.parametrize("a",[0,1])
  4. @pytest.mark.parametrize("b",[3,4])
  5. def test_01(a,b):
  6. print("测试数据组合:a->%s,b->%s"%(a,b))
  7. if __name__ == "__main__":
  8. pytest.main(["-s", "test_3.py"])

运行结果:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小桥流水78/article/detail/739848
推荐阅读
相关标签
  

闽ICP备14008679号