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

img
img

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

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

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

addopts = --strict-markers

markers = slow  serial

**python_files:**指定执行哪些文件

[pytest]

python_files = test_*.py  check_*.py  example_*.py

required_plugins: 必须存在才能运行pytest的插件的空格分隔列表。插件可以直接在其名称后面列出,

也可以不带版本说明符。不同版本说明符之间不允许有空格。如果没有找到任何一个插件,发出一个错误

[pytest]

required_plugins = pytest-django>=3.0.0,<4.0.0  pytest-html   pytest-xdist>=1.0.0

usefixtures: 将应用于所有测试函数的设备列表;这在语义上与应用@pytest.mark.usefixtures 标记所有测试功能

[pytest]

usefixtures = clean_db

testpaths: 当所有项目测试都在一个已知的位置时很有用,以加速测试收集并避免意外地获取不需要的测试

[pytest]

testpaths = testing doc

addopts: 添加指定的 OPTS 命令行参数集,就好像它们是由用户指定的一样

[pytest]

addopts = --maxfail=2  -rf    # exit after 2 failures, report fail info

pytest运行参数

-s:  打印信息

-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 : 移动到堆栈的上一层

img
img

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

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

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

6072)]

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

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

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

  • 10
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值