200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > pytest之conftest.py文件使用

pytest之conftest.py文件使用

时间:2020-03-08 11:50:38

相关推荐

pytest之conftest.py文件使用

log:

使用pytest框架做接口自动化,一般情况下接口测试前置操作首先需要进行鉴权,基于pytest里面fixture共享机制,可以将鉴权部分提取到配置文件里,pytest可以识别加载conftest.py(这个py文件是自己手动创建的,不会生成),此文件配置好后可以全局生效,但是conftest.py是有一些规范要求,具体规范如下:

conftest.py文件名是固定的,不能更改一般情况下将conftest.py文件放在管理用例的包下面不同目录可以有自己的conftest.py,一个项目中可以有多个conftest.pypytest会默认读取conftest.py里面的所有fixture测试用例文件中不需要手动import conftest.py 或 from ... import conftest.py

下面举几个简单的示例:

fixture具体解释请自行百度,这不做过多说明,不写参数默认是function(函数级别的引用)

示例一、在用例里面进行前置鉴权操作,用例里面进行参数引用:

import pytestimport requestsfrom readConfig import readconf_iphost = readconf_ip("vblog")# 共享登录获取到的cookie值@pytest.fixturedef login():login_param = {"username": "sang","password": 123}res = requests.post(url=host + "/login", data=login_param)cookie = res.headers['Set-Cookie']return {"Cookie": cookie}def test_001(login):""":param login: 共享的参数cookie值:return: """print("开始执行第一条用例,获取列表")res = requests.get(url=host + "/currentUserName", headers=login)print("执行结果", res.text)def test_002(login):print("执行第二条用例,获取文章列表")param = {"page": 1, "count": 6}res = requests.get(url=host + "/admin/article/all?",params=param, headers=login)print(f"请求URL:{res.url}\n请求方法:GET\n请求参数:{param}\n响应状态:{res.status_code}\n响应文本:{res.text}\n响应时间:{res.elapsed}")json_res = res.json()assert json_res["totalCount"] == 18398

示例二、在conftest.py进行共享,且在用例里面引用

conftest.py写法:

import pytestimport requestsfrom readConfig import readConf,readconf_ipvblog = readconf_ip("vblog")@pytest.fixturedef login():login_param = {"username": readConf(sec="user", opt="username"),"password": readConf(sec="user", opt="password")}res = requests.post(url=vblog + "/login", data=login_param)cookie = res.headers['Set-Cookie']return {"Cookie": cookie}

测试用例引用

import requestsfrom readConfig import readconf_iphost = readconf_ip("vblog")def test_001(login):"""login鉴权参数直接引用,无需在用例文件进行import conftest.py导入"""print("开始执行第一条用例,获取列表")res = requests.get(url=host + "/currentUserName", headers=login)print("执行结果", res.text)def test_002(login):print("执行第二条用例,获取文章列表")param = {"page": 1, "count": 6}res = requests.get(url=host + "/admin/article/all?",params=param, headers=login)print(f"请求URL:{res.url}\n请求方法:GET\n请求参数:{param}\n响应状态:{res.status_code}\n响应文本:{res.text}\n响应时间:{res.elapsed}")json_res = res.json()assert json_res["totalCount"] == 18398, "实际与预期的不符"

以上内容已实践测试通过,可正常使用

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。