【pytest】常用知识点汇总_pytest官方文档必须掌握的知识点有哪些(3)

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

-v:  详细信息

-k:  运行指定包含某个字符串的测试函数

pytest.main([“-k”,“hello”])  -> 执行测试函数名中带有hello字符串的用例 (同样也可以指定类名,会执行类中所有测试方法)

pytest.main([“-k”,“类名 and not 方法名”])

-q:  简化输出

-x: 只要出现一条失败的用例都会退出

–maxfail:  用例失败个数达到阀值停止运行

pytest.main([“–maxfail=2”])  ->  超过2条运行失败,后续用例就会停止运行

-m:  指定带有标识的用例

pytest.main([“-m”,“smoke”])  ->  执行有 @pytest.mark.smoke 这个标记的测试用例

–durations: 查看最慢的n个用例

pytest.main([“–durations=10”])  查看最慢10个用例

-p no:doctest  关闭插件,比如关闭doctest

pytest断言

语法:assert expression, errorMsg

assert a % 2 == 0, “value was odd, should be even”

预期异常的断言 pytest.raise()   递归超时

pytest参数化

1、@pytest.mark.parametrize(" 变量名… ", 数据)

2、metafunc.parametrize()

 1 def pytest_generate_tests(metafunc):
 2     idlist = []
 3     argvalues = []
 4     # metafunc.cls就是Test_Case类 
 5     for scenario in metafunc.cls.scenarios:
 6         idlist.append(scenario[0])
 7         items = scenario[1].items()
 8         argnames = [x[0] for x in items] # 
 9         argvalues.append([x[1] for x in items])
10     # 给metafunc也就是Test_Case类下的方法全部带上这个parametrize
11     metafunc.parametrize(argnames, argvalues, ids=idlist, scope="class")  
12 
13 
14 scenario1 = ("basic", {"attribute": "value"})
15 scenario2 = ("advanced", {"attribute": "value2"})
16 
17 
18 class Test_Case:
19     scenarios = [scenario1, scenario2]
20 
21     def test_demo1(self, attribute):
22         assert isinstance(attribute, str)
23 
24     def test_demo2(self, attribute):
25         assert isinstance(attribute, str)
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  testcases/test_case01.py::Test_Case::test_demo1[basic] PASSED
  testcases/test_case01.py::Test_Case::test_demo2[basic] PASSED
  testcases/test_case01.py::Test_Case::test_demo1[advanced] PASSED
  testcases/test_case01.py::Test_Case::test_demo2[advanced] PASSED

3、@pytest.mark.parametrize(" 方法名", 数据, indirect=True) 将数据先传递给“方法名”对应的夹具函数进行处理,并且夹具函数接收一个参数request

1 @pytest.fixture
2 def fixt(request): # 这里需要带有参数request,request.param可以拿到["a", "b"]
3     return request.param * 3
4 
5 @pytest.mark.parametrize("fixt", ["a", "b"], indirect=True) #indirect=True,会将数据["a", "b"]传递给fixt函数进行处理
6 def test_indirect(fixt):
7     assert len(fixt) == 3
pytest 生成测试报告

allure报告

1、安装jdk1.8才可以运行

2、解压Allure压缩包

3、配置Allure到环境变量 将allure下的bin配置到环境变量path中

生成allure报告: allure   generate  ./result/  -o  ./report/ --clean

pytest.main([“–alluredir”, “./result”])

pytest traceback输出  作为了解即可  就是显示报错信息的详细程度不同

pytest --showlocals

pytest -l

pytest --tb=auto  默认这种

pytest --tb==line …

pytest pdb调试模式

pytest --pdb   # 每次遇到失败都会进到调试 pdb

pytest -x --pdb # 第一次遇到失败进入pdb,结束测试执行

pytest --pdb --maxfail=3  # 只有钱三次失败跳转到pdb

进入pdb  交互调试常用命令

1、p : 输出变量expr的值

2、l : 列出错误,显示出错的代码

3、a : 打印当前函数的所有参数和变量

4、u : 移动到堆栈的上一层

5、d: 移动到堆栈的下一层

6、q : 退出pdb

pytest fixture夹具

1、@pytest.mark.usefixtures(xxx)

1、fixture函数没法传递返回值给测试用例

2、叠加使用usefixtures 叠加执行顺序  ->  先执行放下方,后执行放上方

2、fixture

autouse = True   测试用例自动使用该fixture函数

scope 指定作用域

params 指定传入的数据

案例演示 用于做数据驱动前 做数据处理

pytest 跳过测试用例
  1. 无条件跳过模块中的所有测试:pytestmark = pytest.mark.skip(“all tests still WIP”)

  2. 根据某些条件跳过模块中的所有测试:pytestmark = pytest.mark.skipif(sys.platform == “win32”,reason=“tests for linux only”)

  3. 如果缺少某些导入,则跳过模块中的所有测试:pexpect = pytest.importorskip(“pexpect”)

当使用参数化时,可以对单个测试实例应用诸如skip和xfail之类的标记

pytest 与 unittest 对比

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

2079)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值