class YamiUtil:
def __init__(self, yaml_file)
self.yaml_file = yaml_file
def read_yaml(self):
with open(self.yaml_file, encoding='utf-8') as f:
value = yaml.load(f, Loader=yaml.FullLoader)
return value
import pytest
import requests
class TestApi():
@pytest.mark.parametrize('args', YamiUtil(yaml_file).read_yaml())
def test_01(self, args):
url = args['request']['url']
params = args['request']['params']
res = request.get(url, params=params)
assert args['validate']['expires_in'] in res.text
***Setting***
Doucument:添加用例说明
Suite Setup:执行此测试套件的前置操作,如初始化数据等,
Suite TearDown;执行此测试套件结束后的操作,如恢复数据等。
Setup:执行用例的前置操作。
Test TearDown:执行用例结束后的操作。
Force Tags:用例标签,suite中的标签会给该测试套件下的所有Test Case增加Force Tags
Timeout;设置每一个测试案例的超时时间,只要超过这个时间就会失败,并停止案例运行。防止某些情况导致案例一直卡住不动,也不停止也不失败。
Template:测试模版,可以指定某个关键字为这个测试套件下所有TestCase的模版,这样所有的TestCase就只需要设置这个关键字的传入参数即可。1(TestCase中使用)
Arguments:传入参数(NewUser Keyword使用)
Return Value:返回值(New User Keyword 使用)
***import***
Add Library:加载测试库,主要是PYTHON目录\Lib\site-packages里的测试库
Add Resource:加载资源,主要是你工程相关的资源文件
Add Variables:加载变量文件
***Variables***
Add Scalar:定义变量
Add List:定义列表型变量
Add Dict:定义字典专注成就品质
***Metadata***
Add Metadata:定义元数据。(作用是在report和log里显示定义好的内容,格式和document一样。)
${x1} = set variable 123456 // 赋值
${x1} // 调用
@{list}= create list 1 2
list:${list[0]}
Append To List ${list} value1 value2
Remove From List ${list} index
Remove Values From List ${list} value
&{map}= create dictionary x=1 y=2
map:${map["x"]}
Set To Dictionary ${map} z=3
Remove From Dictionary ${map} z
Pop
New User Keyword
Name:xxx
Arguments:${arg1}|${arg2}=2(defaultvalue)|@{list}
Run Keyword If 条件 做什么... ELSE 做什么
Run Keyword And Countinue On Failure
should contain ${s1} ${s2} msg="Yes" msg="No"
# or
${res}= evaluate '${s1}'.__contain__('${s2}')
:FOR ${i} IN ${list}
做什么
再做什么
run keyword if ${i}>3 Exit for loop
@{key}= Get Dictionary Keys ${map}
:FOR ${i} IN ${key}
${map['${i}']}
做什么
再做什么
run keyword if ${map['${i}']}>3 Exit for loop