今日分享主题:Python + Pytest 自动化框架中测试用例依赖的探索与实践,今天分享的内容以“依赖别名+scope=’package’”进行演示。 1、安装 pytest-dependenc
  DSIR1rRIFKLz 2023年11月02日 45 0

今日分享主题: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 pytest
from commons.HandleJson import handle_json
import commons.configs as config
from commons.log import logger
from commons.HandleCompare import compareTest
from commons.ApiRequest import apiRequest

baseFileName = '../../testdata/check_premission_data.json'
testCaseData = handle_json.load_json(baseFileName)

class TestDep1():
@pytest.mark.dependency(name='testUserCheck')
@pytest.mark.parametrize('case_data', testCaseData['testcase'])
def testUserCheck(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条用例,如下所示:

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

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

#test_dep_02.py文件内容如下:

import pytest
from commons.HandleJson import handle_json
import commons.configs as config
from commons.log import logger
from commons.HandleCompare import compareTest
from commons.ApiRequest import apiRequest

baseFileName = '../../testdata/post_user_login_data.json'
testCaseData = handle_json.load_json(baseFileName)

class TestDep2():
@pytest.mark.dependency(depends=["testUserCheck"], scope='package')
@pytest.mark.parametrize('case_data', testCaseData['testcase'])
def testUserLogin(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条用例,如下所示:

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

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  bzUvzvVq9oY1   2023年11月02日   46   0   0 数据类型json数据库
DSIR1rRIFKLz
最新推荐 更多