32-pytest-内置fixture:request使用
前言
- 本篇来学习pytest内置fixture中的request
request.param
# -*- coding: utf-8 -*-
# @Time : 2022/3/26
# @Author : 大海
import os
import pytest
# 测试数据
test_data = ["user1", "user2"]
@pytest.fixture(params=test_data)
def register_users(request):
# 获取当前的测试数据
user = request.param
print("\n拿着这个账号去注册:%s" % user)
result = "success"
return user, result
def test_register(register_users):
user, result = register_users
print("在测试用例里面里面获取到当前测试数据:%s" % user)
print(result)
assert result == "success"
if __name__ == '__main__':
os.system('pytest -s -v test_61.py')
request.config
- 获取测试的配置文件参数
- 在 conftest.py 写一个 hook函数, pytest_addoption 的作用是用于添加命令行参数,request.config 用于读取测试的配置数据
# -*- coding: utf-8 -*-
# @Time : 2022/4/1
# @Author : 大海
import pytest
def pytest_addoption(parser):
parser.addoption(
"--cmdopt", action="store", default="type1", help="my option: type1 or type2"
)
@pytest.fixture
def cmdopt(request):
return request.config.getoption("--cmdopt")
- 测试用例
# -*- coding: utf-8 -*-
# @Time : 2022/4/1
# @Author : 大海
import os
# 方式1 使用request.config
def test_answer_1(request):
kind = request.config.getoption("--cmdopt")
print("获取到命令行参数:%s" % kind)
# 方式2 使用fixture
def test_answer_2(cmdopt):
print("获取到命令行参数:%s" % cmdopt)
if __name__ == '__main__':
os.system('pytest -s -v test_62.py')
request.module
- fixture 函数可以通过接受 request 对象来反向获取请求中的测试函数、类或模块上下文
- 在 conftest.py 编写如下代码
# -*- coding: utf-8 -*-
# @Time : 2022/4/1
# @Author : 大海
@pytest.fixture(scope="module")
def smtp(request):
server = getattr(request.module, "smtpserver", "smtp.qq.com")
print("fixture 获取到的server :%s" %server)
smtp = smtplib.SMTP(server, 587, timeout=5)
yield smtp
print("完成 %s (%s)" % (smtp, server))
smtp.close()
- 测试用例
# -*- coding: utf-8 -*-
# @Time : 2022/4/1
# @Author : 大海
import os
smtpserver = "mail.python.org"
def test_show(smtp):
print("case show")
if __name__ == '__main__':
os.system('pytest -s -v test_63.py')
request的其他成员对象
- 在 conftest.py 编写如下代码
# -*- coding: utf-8 -*-
# @Time : 2022/4/1
# @Author : 大海
@pytest.fixture(autouse=True)
def print_request(request):
print("\n=======================request start=================================")
print(request.module)
print(request.function)
print(request.cls)
print(request.fspath)
print(request.fixturenames)
print(request.fixturename)
print(request.scope)
print("\n=======================request end=================================")
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhhkbejg
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
微信运动停用后别人还能看到步数吗
PHP中文网 07-22