企业网站可以做商城类,天水市建设银行官方网站,企业概况的内容,企业在建设自己网站时无论什么自动化#xff0c;部分测试用例均会运用到参数化#xff0c;参数化可以帮助我们覆盖更多的测试用例#xff0c;减少重复代码逻辑#xff0c;然而自动化中也有多种实现参数化的方法#xff0c;比如UnitTest的DDT模式#xff0c;Pytest的fixture#xff0c;以及Py…无论什么自动化部分测试用例均会运用到参数化参数化可以帮助我们覆盖更多的测试用例减少重复代码逻辑然而自动化中也有多种实现参数化的方法比如UnitTest的DDT模式Pytest的fixture以及Pytest的parametrize均可以实现测试用例的参数化。今天小编介绍新的一种方法通过hook函数来实现测试用例的参数化废话不多说直接进入正文。pytest_generate_testspytest_generate_tests钩子函数是Pytest框架中用来动态生成测试用例参数的钩子函数。通过它我们可以在运行时动态地生成测试参数从而避免手动编写重复的测试用例。在conftest.py文件中编写对应的函数信息import pytest def pytest_generate_tests(metafunc): if data in metafunc.fixturenames: metafunc.parametrize(data, metafunc.module.test_data, scopefunction )其中代码中data表示测试用例中对应的传参类似fixture名称传入metafunc表示当前测试用例的模块对象scope表示测试用例的作用域默认为function。方法一简单编写两条测试用例然后通过pytest_generate_tests实现测试用例的参数化import requests url http://apis.juhe.cn/simpleWeather/query # 测试数据 test_data [{ data: { city: 上海, key: xxxxxxxx } }, { data: { city: 北京, key: xxxxxxx } } ] # 测试用例 def test_01(data): # 启动**data表示传入参数 r requests.post(url, **data) print(r.text)编写完成后直接运行程序通过结果发现已经执行成功。方法二通过上面的案例小伙伴们可能懂了pytest_generate_tests如何运行的.其实该函数主要提供的就是动态方便我们实现测试用例上述方法很显然不动态小编在介绍一种使用方法场景是根据不同的命令行传入不同的测试数据。这个时候就想到了pytest的另一个函数pytest_addoption可以实现自定义命令行参数后再次动态实现我们的参数化内容。更改conftest.py文件内容增加pytest_addoption函数内容import pytest def pytest_addoption(parser): # 添加自定义参数--anjing parser.addoption( --anjing, actionstore, defaultanjing, help将anjing添加到pytest的配置参数中 ) def pytest_generate_tests(metafunc): if data in metafunc.fixturenames: # 获取命令行的参数信息 result metafunc.config.getoption(anjing) # 判断传参值通过传参值进行不同传入参数 if result test: metafunc.parametrize(data, metafunc.module.test_shanghai, scopefunction ) if result qa: metafunc.parametrize(data, metafunc.module.test_beijing, scopefunction )同样根据刚才的测试用例将测试数据进行分离参数值为test的访问上海的参数参数值为qa的我们访问北京的参数import requests # 上海的参数 test_shanghai [{ data: { city: 上海, key: xxxxxxxx } }, ] # 北京的参数 test_beijing [{ data: { city: 北京, key: xxxxxxx } }] def test_01(data): 线下数据 url http://apis.juhe.cn/simpleWeather/query r requests.post(url, **data) print(r.text)编写完成后我们直接验证命令行传入不同参数实现了动态参数化的内容。如果没有传入参数的话系统会出现报错的。总结小编通过两种方法介绍了pytest_generate_tests的使用方法和一般的使用场景。当然该函数肯定不仅仅只有这两种方法来使用具体的使用方法可以根据对应的需求或者项目进行来完成不同的需求不同的使用方法如果有更好的使用方法可以下方留言大家一起沟通交流。感谢您的阅读希望本篇文章可以给您带来帮助。感谢每一个认真阅读我文章的人作为一位过来人也是希望大家少走一些弯路如果你不想再体验一次学习时找不到资料没人解答问题坚持几天便放弃的感受的话在这里我给大家分享一些自动化测试的学习资源希望能给你前进的路上带来帮助。软件测试面试文档我们学习必然是为了找到高薪的工作下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料并且有字节大佬给出了权威的解答刷完这一套面试资料相信大家都能找到满意的工作。视频文档获取方式这份文档和视频资料对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库这个仓库也陪伴我走过了最艰难的路程希望也能帮助到你以上均可以分享点下方小卡片即可自行领取。