深入理解自动化测试框架pytest的配置文件

都有哪些种类的配置文件

1.pytest.ini: pytest的主配置文件,可以改变pytest的默认行为
2.conftest.py:是本地插件库,其中的hook函数和fixture将作用于该文件所在的目录以及所有子目录
3.tox.ini: 如果使用到tox工具,也会有这个配置文件,可以把pytest的配置都写在tox.ini文件里,这样就不用同时写两个配置文件了
4.setup.cfg: 也采用的是ini文件的格式,而且可以影响setup.py的行为,使用python setup.py test运行所有测试用例

加入我们!!!交流群!!!!642830685,领取最新软件测试资料大厂面试和Python自动化、接口、框架搭建学习资料!

pytest 的配置选项

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

markers (linelist):   markers for test functions
  empty_parameter_set_mark (string):
                        default marker for empty parametersets
  norecursedirs (args): directory patterns to avoid for recursion
  testpaths (args):     directories to search for tests when no files or directories are given in the
                        command line.
  usefixtures (args):   list of default fixtures to be used with this project
  python_files (args):  glob-style file patterns for Python test module discovery
  python_classes (args):
                        prefixes or glob names for Python test class discovery
  python_functions (args):
                        prefixes or glob names for Python test function and method discovery
  disable_test_id_escaping_and_forfeit_all_rights_to_community_support (bool):
                        disable string escape non-ascii characters, might cause unwanted side effects(use
                        at 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 options
  minversion (string):  minimally required pytest version

1.addopts

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

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

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

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

2.markers

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

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

3.minversion

指定pytest最小版本号

4.norecursedirs

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

通过指定norecursedirs可以实现

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

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

5.testpaths

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


image.png
[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文件输出配置等,大家可查阅官方文档继续学习!

加入我们!!!交流群!!!!642830685,领取最新软件测试资料大厂面试和Python自动化、接口、框架搭建学习资料!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,539评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,594评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,871评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,963评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,984评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,763评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,468评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,357评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,850评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,002评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,144评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,823评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,483评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,026评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,150评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,415评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,092评论 2 355