0
点赞
收藏
分享

微信扫一扫

浅浅的分享下这几天写pytest脚本的一些收获


先来说下背景,为什么最近又在开始写pytest的脚本了,那自然是要把部门的接口自动化搞起来呗,之前搞的metersphere那套维护不下去了,加上一些其他原因,已经放弃了,打算试试新的。然后,最后还是觉得写脚本最方便,同时,最大的问题也是:写脚本太灵活,不易管理。

pytest其实上手的话还是比较快的,好早好早之前就稍微拿了本书看了前面一点点基础 ,然后写过一篇文章:一篇文章为你揭秘pytest的基本用法

但是,具体上次写pytest的文章已经过了好久了,而且也没怎么在公司实战运用起来,学的东西很快就忘记了,这两天刚开始写脚本,发现脚本写起来还是蛮有意思的,沉迷于写脚本加班的快乐中,在写脚本的过程中也遇到了一些问题,简单记录一下,当然写的不一定对 ,需要大家自己去识别。

1、conftest里面定义的fixture理论上只能直接用在test开头的用例函数上,能当做传参用在普通函数上吗?

浅浅的分享下这几天写pytest脚本的一些收获_用例

用ai查了一下说貌似是不能这么使用,后来在网上查了下 ,貌似有的说pytest里面有个什么内置的request可以获取fixture,不过我试了下貌似没成功,可能用法有问题咯

2、今天遇到一个好奇怪的问题,我代码的目录结构包含以下几个包:api_definition、testcase、testdata等,今天写脚本的时候,发现运行用例的时候,代码里面用到的from testdata.xxx import xxxx 这么使用居然有问题,说是找不到module,然后查了半天资料也没能解决,网上有说将文件路径append到环境变量中,这个试过了不行。还有的说安装一个插件,然后在pytest.ini文件里面可以指定pythonpath的路径啥的,这个试了貌似也没有效果,我用的最新版,不知道是不是跟版本有关系,后来把testdata的名字改成testcase_data就可以了,我就感觉到很奇怪。当时pytest.ini文件里面如下:

[pytest]
python_files = test_*.py *_test.py
python_classes = Test*
python_functions = test_*

3、再讲一下场景一里面遇到的问题,当时为什么非得想在普通函数里面去调用fixture呢,因为当时同事在conftest里面定义了一个获取数据库连接的函数 ,我想在普通函数里面调用后,然后传给pytest.mark.parametrize当数据驱动使用的,后来折腾了半天没解决,我就把获取数据库连接的写到一个工具类,然后定义为单例模式,保证一个数据库同一时间只有一个连接对象 ,然后在conftest里面写一个fixture的函数,每次运行完用例之后自动的关闭数据库连接。


举报

相关推荐

0 条评论