Python + Pytest 自动化框架的用例依赖实操

Posted 起码有故事

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python + Pytest 自动化框架的用例依赖实操相关的知识,希望对你有一定的参考价值。


今日分享主题:Python + Pytest 自动化框架中测试用例依赖的探索与实践,今天分享的内容以“依赖别名+scope=’package’”进行演示。

1、安装 pytest-dependency

安装命令:pip install pytest-dependency,它是一个 pytest 第三方插件,主要解决用例之间的依赖关系。

2、dependency 可作用的范围说明

(1).session:作用于全局,可跨目录调用。但被依赖的用例必须先执行,否则用例会执行跳过。

(2).package:作用于当前目录同级的依赖函数,跨目录无法找到依赖的函数。

(3).module:不传递scope,默认参数是’module’,作用于当前文件,只会查找当前文件的符合条件的文件名,类里同名的方法不会被依赖。

(4).class:作用于所属的类,外部类不会被关联。

3、使用步骤

(1).首先,需要在用例开始的位置打上一个装饰器@pytest.mark.dependency(),这是代表这条用例作为主条件,如果这条用例失败,关联它的用例会跳过执行。

(2).在被关联的用例上,也打上带参数的装饰器@pytest.mark.dependency(),depends 接受的参数是关联的依赖用例名。

(3).在 depends 也可以用别名的方式指定用例名。

4、代码演示

test_dep_01.py:这是一个被依赖的文件,用来做权限检查的(这是我模拟的一个本地的 ip 访问校验使用的)

#test_dep_01.py文件内容如下:

import pytestfrom commons.HandleJson import handle_jsonimport commons.configs as configfrom commons.log import loggerfrom commons.HandleCompare import compareTestfrom commons.ApiRequest import apiRequestbaseFileName = '…/…/testdata/check_premission_data.json’testCaseData = handle_json.load_json(baseFileName)classTestDep1(): @pytest.mark.dependency(name=‘testUserCheck’) @pytest.mark.parametrize(‘case_data’, testCaseData[‘testcase’])deftestUserCheck(self, case_data): api_response = apiRequest.api_request(config.apiurl, testCaseData, case_data)for case_validate in case_data[‘validate’]: logger.info(‘断言期望相关参数:check:{},comparator:{},expect:{}’.format(case_validate[‘check’], case_validate[‘comparator’],case_validate[‘expect’])) compareTest.compare_Assert(api_response, case_validate[‘check’], case_validate[‘comparator’],case_validate[‘expect’])

check_premission_data.json:用例数据文件只有1条用例,如下所示:

test_dep_02.py:这个是依赖上面的代码内容,逻辑是当前面的检查校验通过后,才可以允许做登录。

#test_dep_02.py文件内容如下:

import pytestfrom commons.HandleJson import handle_jsonimport commons.configs as configfrom commons.log import loggerfrom commons.HandleCompare import compareTestfrom commons.ApiRequest import apiRequestbaseFileName = ‘…/…/testdata/post_user_login_data.json’testCaseData = handle_json.load_json(baseFileName)classTestDep2(): @pytest.mark.dependency(depends=[“testUserCheck”], scope=‘package’) @pytest.mark.parametrize(‘case_data’, testCaseData[‘testcase’])deftestUserLogin(self, case_data): api_response = apiRequest.api_request(config.apiurl, testCaseData, case_data)for case_validate in case_data[‘validate’]: logger.info(‘断言期望相关参数:check:{},comparator:{},expect:{}’.format(case_validate[‘check’], case_validate[‘comparator’],case_validate[‘expect’])) compareTest.compare_Assert(api_response, case_validate[‘check’], case_validate[‘comparator’],case_validate[‘expect’])if name == ‘main’: pytest.main([’-sv’])

post_user_login_data.json:用例数据文件一共有4条用例,如下所示:

5、执行test_dep_02.py文件结果如下

总结:

今天分享的是 Python + Pytest 框架中的用例依赖关系及使用,后续会持续整理分享演示的代码并将其以测试资料的文章的共享形式供大家查阅与获取。


最后:如果对软件测试、接口测试、自动化测试、技术同行、持续集成、面试经验交流。感兴趣可以进到 902061117,群内会有不定期的分享测试资料。

如果文章对你有帮助,麻烦伸出发财小手点个赞,感谢您的支持,你的点赞是我持续更新的动力。

好文推荐

2021软件测试工程师面试题汇总(内含答案)-看完BATJ面试官对你竖起大拇指!

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

软件测试和软件开发哪个发展更好

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

以上是关于Python + Pytest 自动化框架的用例依赖实操的主要内容,如果未能解决你的问题,请参考以下文章

pytest自动化测试框架详解+mark标记+fixture夹具

pytest自动化测试框架详解+mark标记+fixture夹具

pytest + yaml 框架 -19.根据 swagger.json 自动生成 yaml 格式自动化用例

python自动化web自动化:1.pytest框架讲解+集成allure

pytest为什么不能运行指定目录下的用例

超详细从入门到精通,pytest自动化测试框架实战教程-allure测试报告