资讯专栏INFORMATION COLUMN

带你深入理解自动化测试框架Pytest的配置文件!

wayneli / 2019人阅读

摘要:其中用到编程等,还需要花更多的精力去深入学习,当每项技能都能掌握到一定深度,才能称为一个完整的知识体系。

都有哪些种类的配置文件

pytest.ini:pytest的主配置文件,可以改变pytest的默认行为

conftest.py:是本地插件库,其中的hook函数和fixture将作用于该文件所在的目录以及所有子目录

tox.ini:如果使用到tox工具,也会有这个配置文件,可以把pytest的配置都写在tox.ini文件里,这样就不用同时写两个配置文件了

setup.cfg: 也采用的是ini文件的格式,而且可以影响setup.py的行为,使用python setup.py test运行所有测试用例

pytest 的配置选项

使用pytest --help可以查看pytest支持的所有配置的选项,以下只截取部分

markers (linelist):   markers for test functionsempty_parameter_set_mark (string):default marker for empty parametersetsnorecursedirs (args): directory patterns to avoid for recursiontestpaths (args):     directories to search for tests when no files or directories are given in thecommand line.usefixtures (args):   list of default fixtures to be used with this projectpython_files (args):  glob-style file patterns for Python test module discoverypython_classes (args):prefixes or glob names for Python test class discoverypython_functions (args):prefixes or glob names for Python test function and method discoverydisable_test_id_escaping_and_forfeit_all_rights_to_community_support (bool):disable string escape non-ascii characters, might cause unwanted side effects(useat your own risk)console_output_style (string):console output: "classic", or with additional progress information ("progress"(percentage) | "count").xfail_strict (bool):  default for the strict parameter of xfail markers when not given explicitly(default: False)addopts (args):       extra command line optionsminversion (string):  minimally required pytest version
  • addopts

当在命令行运行测试用例的时候,通常会指定多个命令行参数,但是总不能每次运行的时候都要输入一遍,这个时候我们就可以利用addopts这个选项,将一写常用的参数聚合到一起,执行的时候不用显示指定,只需要pytest即可。

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

rsxX表示pytest会显示所有测试用例被跳过-s、预计失败-x、预计失败单通过-X的原因-s,-l表示pytest显示失败用例堆栈中的局部变量的信息,–tb=short 表示简化堆栈信息,只保留文件和行数,

–strict 选项表示禁止使用未在配置文件注册过的标记

  • markers

将自定义的标记注册进pytest中,如果使用里–strict选项,在遇到拼写错误或者未注册的标记的时候就会报错。如果不注册不使用–strict也能用,但是当在自定义的标记出现拼写错误的时候,在默认情况下不会引起程序错误,通过注册标记的方式,将错误提前抛出,方便问题处理。

[pytest]markers =      smoke: 用于冒烟测试      get
  • minversion

指定pytest最小版本号

  • norecursedirs

pytest搜索测试用例的时候,会递归遍历所有子目录,但是随着产品的迭代有些用例已经不适合或者不必要在运行了,这时我们想告诉pytest,这些用例就不要执行了。

通过指定norecursedirs可以实现

[pytest]norecursedirs = .* venv src *.egg dist build

其实类似.gitignore文件的功能,忽略调某些文件不进行版本控制

  • testpaths

norecursedirs告诉pytest那些路径不用访问,testpaths告诉pytest去哪里访问。testpaths是一系列相对于根目录的路径,用于限定测试用例的搜索范围,当使用tox来管理测试用项目时,这时的项目目录是自定义的,此时一般tox.ini和tests用例文件夹处于同级目录,就需要在tox.ini里指定测试目录

[pytest]testpaths = tests
  • 更改测试搜索的规则

pytest根据一定的规则搜索并运行测试,标准的搜索规则如下:

1.从一个多个目录开始查找,可以在命令行指定目录,如果未指定则以当前目录为根目录

2.在该目录或者所有子目录下递归查找测试模块

3.测试模块指的是文件名以test_.py或._test.py的文件

4.在测试模块中查找以test_开头的函数名

5.查找以Test开头的类,会筛选调有__ini__函数的类,在查找以test开头的方法

python_classes

一般情况下,pytest的测试搜索规则寻找以Test开头的测试类,而且这个类不能包含__ini__()函数,但是有时候会把测试类命名以Test结尾的类,比如*Test,这个时候就可以指定python_classes的值来解决**

[pytest]python_classes = *Test Test* *Suit

python_files

和python_classes类似,可以更改测试模块的搜索规则

[pytest]python_files = *_test.py test_*.py

python_fuctions

修改测试方法的搜索规则

[pytest]python_fuctions = *_test test_*
  • 禁用xpass

设置xfail_strict = true将会使得那些被标记为@pytest.mark.xfail但实际通过党的测试用例也会显示为失败。

pytest的配置选项还有配置是否输出到Junit xml报告文件中,控制台日志输出,log文件输出配置等,大家可查阅官方文档继续学习!

以上笔者的经历更像一张横向的知识网,创建了一个交流平台 914172719 ,群内有各种技术同行交流、学习资料、面试经验等。其中用到jenkins、docker、moutebank、python编程等,还需要花更多的精力去深入学习,当每项技能都能掌握到一定深度,才能称为一个完整的知识体系。

最后: 可以关注公众号:伤心的辣条 ! 进去有许多资料共享!资料都是面试时面试官必问的知识点,也包括了很多测试行业常见知识,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!


好文推荐

转行面试,跳槽面试,软件测试人员都必须知道的这几种面试技巧!

面试经:一线城市搬砖!又面软件测试岗,5000就知足了…

面试官:工作三年,还来面初级测试?恐怕你的软件测试工程师的头衔要加双引号…

什么样的人适合从事软件测试工作?

那个准点下班的人,比我先升职了…

测试岗反复跳槽,跳着跳着就跳没了…

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/119084.html

相关文章

  • 利用xdist实现动化测试用例并行执行

    摘要:在测试行业,如果利用作为脚本语言开发自动化测试用例,可用的框架有等主流可供选择,个人感觉较之和应该算是现阶段最灵活,功能最全面,扩展最丰富的框架了。不知道各位在做自动化的时候有没有遇到过用例数过多,单机执行效率不高的困扰。 在测试行业,如果利用python作为脚本语言开发自动化测试用例,可用...

    tabalt 评论0 收藏0
  • 做了3年半测试员,薪资不到20K,今天,我辞职了…

    摘要:测试发现缺陷就报,开发改了之后测试再验证缺陷是否已修复。可以说并不简单,我个人认为好的测试人员是比开发人员的难度大的,不求全部精通,但要知识广。 后面这个项目才是我...

    hatlonely 评论0 收藏0
  • 做完动化测试,但别让不会汇报毁了你...

    摘要:前端自动化测试百度搜索功能实战可以与结合生成测试报告。以网页版本的百度为例,百度首页呈现的功能新闻网页贴吧知道音乐图片视频地图等,我们以百度网页的搜索功能为例,使用结合自动化测试框架,完成一个搜索功能的测试。 ...

    HelKyle 评论0 收藏0
  • 使用Django+Pytest,教你搭建在线动化测试平台

      小编写这篇文章的主要目的,就是教给大家,如何使用Django+Pytest,并用Django+Pytest搭建在线自动化测试平台,具体怎么做呢?下面给大家做一个详细的解答。  一、测试平台:  解决分散用例执行方式,提供统一测试用例执行过程、用例管理、测试报告  主要是基于:  fastapi+vue.js  django+vue.js  django  二、搭建过程  2.1使用django...

    89542767 评论0 收藏0
  • 2021年软件测试工具总结——单元测试工具

    摘要:单元测试框架作为的标准库,是其他单元测试框架的基础。可以和和配合使用编写单元测试。官网地址单元测试覆盖率工具单元测试中还需要用到代码覆盖率工具。代码覆盖率统计工具用来发现没有被测试覆盖的代码,完善单元测试的覆盖率。 在应用程序中,单元是具有一个或多个输入和单个输出的软件中最小可测试部分。单元...

    qingshanli1988 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<