前言
在自动化测试过程中经常需要在不同的环境下进行测试验证,所以写自动化测试代码时需要考虑不同环境切换的情况。pytest钩子函数pytest_addoption可以很好帮我们解决这个痛点。
pytest_addoption(parser, pluginmanager)
注册argparse样式选项和ini样式配置值,在测试运行开始时调用一次。
注意:
由于pytest在启动过程中如何发现插件,因此该函数只能在位于测试根目录的插件或conftest.py文件中实现。
参数
parser(pytest.parser)–若要添加命令行选项,请调用parser.addoption(…)。若要添加ini文件值,请调用解析器.addini(…)。
pluginmanager(pytest.PytestPluginManager)–pytest插件管理器,可用于安装hookspec()或hookpimpl(),并允许一个插件调用另一个插件的钩子来更改命令行选项的添加方式。
以后可以分别通过配置对象访问选项:
config.getoption(name)来检索命令行选项的值。
config.getini(name)来检索从ini样式文件中读取的值。
config对象通过.config属性在许多内部对象上传递,或者可以作为pytestconfig fixture检索。
在conftest.py文件中定义命令行参数
1 2 3 4 5 6 7 8 9 10 11 |
|
我们定义了不同环境下的命令参数:dev、sit、uat,我们怎么获取运行的命令行参数呢?
获取命令行参数
1 2 3 |
|
设置不同环境的全局变量
在不同的测试环境下,URL、用户信息等数据都是不一样的,建议在conftest中给全局变量赋值可以减少代码冗余。
先定义一个数据文件,data_util.py分别获取用户信息和URL信息
1 2 3 4 5 6 7 8 9 10 11 12 |
|
然后在conftest中根据环境设置全局变量值
1 2 3 4 5 6 7 8 9 10 |
|
注意fixture的使用范围为整个测试会话。
以下是完整的conftest
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
|
定义测试类及测试方法
注意fixture不能在x-unit风格下的setup\teardown中引用,因此需要使用fixture定义setup、teardown方法才能引用到conftest里的fixture,一般我们在setup方法中初始化环境变量具体如下:
1 2 3 4 5 6 7 8 |
|
这样我们就在测试前把环境信息设置OK了。
测试验证
以下是测试方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
|
我们首先填的uat命令运行,查看输出:
可以看出输出是正确的,我们再切换成sit试试:
1 2 |
|
可以看出在不同的命令下获得的测试数据也不一样,这样我们就达到了环境切换的目的了~
现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:485187702【暗号:csdn11】
最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走! 希望能帮助到你!【100%无套路免费领取】