前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Pytest的配置文件(八)

Pytest的配置文件(八)

作者头像
无涯WuYa
发布2019-10-29 16:32:27
8140
发布2019-10-29 16:32:27
举报

在前面的文章中介绍了Pytest中使用conftest.py来共享fixture,事实上我们可以通过Pytest中的配置文件pytest.ini来改变Pytest的执行方式,如指定pytest执行的最低版本,明确规定什么目录下的测试点是不可以执行的,那些目录下的测试点是可以执行的,以及执行过程中它的搜索规则,我们可以依据自己的需求来进行自定义。下面就依据这些来分别介绍这些的应用。不得不说,Pytest真的很自由,没有unittest那么多的拘束,这点比较自由。

一、指定命令行选项

在执行中,特别是Pytest的命令行执行中,经常会指定命令行后面的参数,如-v的参数会显示详细的信息,关于这些参数在这里就不再详细的介绍。在执行Pyest后,我们更多的是想看到所有的测试点都被执行,所以要应用Pytest的配置文件,首先在一个项目中创建pytest.ini的配置文件,如下面的配置文件指定了执行所有测试点,并且详细的信息输出,见配置文件内容:

[pytest]
addopts= -v

要执行的测试点,在src和tests包各自存在一个测试模块,目录图:

见执行pytest命令后输出的信息,特别说明这里我们执行的时候就不需要指定pytest -v了,直接pytest就可以看到详细的信息,如下图所示:

collecting ...
 src/test_src.py::test_001 ✓            33% ███▍
 src/test_src.py::test_002 ✓            67% ██████▋
 tests/test_ini.py::test_passing ✓     100% ██████████

Results (0.04s):
       3 passed

但是很多的时候,我们希望看到的是简化的信息,那么配置文件可以修改为:

[pytest]
addopts= -rsxX -l --tb=short

见执行后输出的信息:

collecting ...
 src/test_src.py ✓✓               67% ██████▋
 tests/test_ini.py ✓             100% ██████████

Results (0.03s):
       3 passed

二、注册标记

在编写测试点的时候,由于业务的需要,或者说我们会依据产品模块的分类,编写的测试点会进行分类,所以也希望执行的时候某些分类是可以执行的,但是没有写在配置文件里面的分类是不可以执行的,如最新的配置文件为:

[pytest]
addopts= -v -rsxX -l --tb=short --strict

markers=
  smoke:执行标记为smoke的测试函数
  login:执行标记为login的测试函数

依据上面的配置文件信息,可以得出只执行标记为smoke和login的测试点,而其他的不会被执行,并且打印详细的信息,见要执行的测试的源码:

import  pytest

def test_passing():
    assert  1==1
@pytest.mark.smoke
def test_smoke_001():
    pass
@pytest.mark.smoke
def test_smoke_002():
    pass
@pytest.mark.login
def test_login_001():
    pass
@pytest.mark.login
def test_login_002():
    pass
@pytest.mark.logout
def test_logout_001():
    pass
@pytest.mark.logout
def test_logout_002():
    pass

执行后,会显示出未注册的标记,见输出的信息:

collecting ...
―――――ERROR collecting tests/test_ini.py ――――――――
'logout' not a registered marker

!!!!Interrupted: 1 errors during collection !!!!

Results (0.09s):

可以看到错误的提示信息提示我们logou未注册,那么解决的办法要么是注册,要么是注释这些测试代码,其实也可以通过pytesyt --markers来查看注册的标记。那么就在配置文件中增加logout的标记信息,再执行,见输出的结果信息:

collecting ...
 src/test_src.py::test_001 ✓           11% █▎
 src/test_src.py::test_002 ✓           22% ██▎
 tests/test_ini.py::test_passing ✓     33% ███▍
 tests/test_ini.py::test_smoke_001 ✓   44% ████▌
 tests/test_ini.py::test_smoke_002 ✓   56% █████▋
 tests/test_ini.py::test_login_001 ✓   67% ██████▋
 tests/test_ini.py::test_login_002 ✓   80% ███████▊
 tests/test_ini.py::test_logout_001 ✓  89% ████████▉
 tests/test_ini.py::test_logout_002 ✓ 100% ██████████

Results (0.04s):
       9 passed

前面很多文章介绍了Pytest的知识体系,后面也会逐步的介绍Pytest其他方面的知识体系,以及在UI自动化测试和API测试框架中的案例应用和案例实战。也谢谢您的阅读和关注。您也可购买我的书籍和测试实战视频。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-10-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python自动化测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、指定命令行选项
  • 二、注册标记
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档