pytest -fixture-request
request
在pytest-fixture经常使用到,具体看看有什么内容:
# conftest.py
import pytest
@pytest.fixture(params=['环境1','环境2'])
def fixture1(request):
print(request.param) # 获取当前fixture的参数化,前提是有params参数,如果没有就会报错
print(request.module) # 获取当前调用fixture的脚本,就是py文件
print(getattr(request.module,'test_0011','001')) # 可以判断当前py文件中有什么属性
print(request.node) # 获取当前执行的用例
marker = request.node.get_closest_marker('mymark') # 获取当前用例是否有标记mark=mymark,获取不到返回为None
if marker is None:
data = None
else:
print(marker.name) # 打印当前用例的标记name
print(marker.args) # 获取标记的参数,返回的是元祖
data = marker.args[0] # 获取标记的参数
return data
自动化用例
import pytest
@pytest.mark.mymark(10,'par2')
def test_001(fixture1):
print('执行测试用例=========')
assert fixture1 == 10
@pytest.mark.mymark2(10)
@pytest.mark.parametrize('name,pw',[('tarzan1','pw1'),('tarzan2','pw2')])
def test_002(name,pw,fixture1):
print(name)
print(pw)
print('执行测试用例=========')
assert fixture1 == 10
-
test_002
他本身是参数化的,fixture也是参数化的,执行顺序fixture参数1 -> 用例参数1 -> 用例参数2 -> fixture参数2 -> ...一共执行4次 -
注意不要和
requests
库搞混了